gpt4 book ai didi

c - 如何使用 Math.h 中的 M_LN2

转载 作者:太空狗 更新时间:2023-10-29 16:12:18 25 4
gpt4 key购买 nike

我正在尝试使用 math.h 库中的常量 M_LN2,但似乎总是出现编译器错误。代码是:

#include <stdio.h>
#include <math.h>

int main(){

double x = M_LN2;
printf("%e",x);

return 0;
}

在ubuntu上用gcc编译

gcc -std=c99 lntester.c -o lntester -lm

获取输出:

error: 'M_LN2' undeclared 

如果能帮助理解为什么会发生这种情况,我们将不胜感激。

如下所述,if def 没有得到定义,使用 gcc 和 c99 导致了这个问题。下面是解决问题并允许我使用 c99 的编译代码。

gcc -std=c99 -D_GNU_SOURCE lntested.c -o lntester -lm

最佳答案

any help in understanding why this is happening would be greatly appreciated.

您可以打开/usr/include/math.h 并尝试找到M_LN2 的定义。对我来说,它是由条件宏定义和包装的:

#if defined __USE_BSD || defined __USE_XOPEN
...
# define M_LN2 0.69314718055994530942 /* log_e 2 */
...
#endif

当您使用选项编译代码时 -std=c99 既没有定义 __USE_BSD 也没有定义 __USE_XOPEN ,所以所有由 包装的变量如果定义也没有定义。

您可以在不使用 -std=c99 选项或使用 -std=gnu99 选项的情况下编译您的代码。

关于c - 如何使用 Math.h 中的 M_LN2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25671935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com