尽管据说在 cmath 中定义了数学特殊函数

问题描述 投票:0回答:1

我需要使用cmath

header
中定义的对数积分函数。不幸的是,当我尝试编译它时,我得到了一个
error: no member named 'expint' in namespace 'std'
。要重现此错误,您只需尝试编译此文件即可。

#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
  
int main()
{
    std::cout << "Ei(0) = " << std::expint(0) << '\n'
              << "Ei(1) = " << std::expint(1) << '\n'
              << "Gompertz constant = " << -std::exp(1) * std::expint(-1) << '\n';
}

我尝试编译指定 std 库的此文件:

c++17
gnu++17
gnu++20
gnu++2b
,每次都会遇到相同的错误。我使用的是带编译器的 M1 Mac

Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: arm64-apple-darwin23.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

问题是什么?为什么这个函数没有定义在

cmath
上?

c++ standard-library
1个回答
0
投票

std::expint
及其家族是在 C++17 中引入的,根据 cppreference 编译器支持页面,目前仅 GGC 7+、MSVS 19.14+ 和 Embarcadero 10.3+ 支持它们。

如果你现在想使用这些功能,你将需要使用自制程序并获取 GCC 或 MSVS。

© www.soinside.com 2019 - 2024. All rights reserved.