使用GCC将Math库链接到C90代码

时间:2011-09-09 02:23:00

标签: gcc math.h c89

我想用数学库编译一个简单的C90代码:

main.c中:

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

int main()
{
  printf("M_PI: %f\n", M_PI);
}

我使用GCC编译器并使用选项-ansi -pedantic来强制执行C90标准。

gcc -ansi -pedantic -lm main.c

但它没有编译。以下是错误消息:

main.c: In function ‘main’:
main.c:7:25: error: ‘M_PI’ undeclared (first use in this function)
main.c:7:25: note: each undeclared identifier is reported only once for each function it appears in

我的问题是,为什么? C90标准是否禁止使用数学库?

2 个答案:

答案 0 :(得分:5)

当需要严格的iso标准时,未定义M_PI。在三角函数下的this页面上查看。建议在使用-ansi时,只需自己定义:

#define M_PI 3.14159265358979323846264338327

答案 1 :(得分:2)

M_PI通常被声明为宏,并且有一个显式的保护#if !defined(_ANSI_SOURCE)(至少在OSX中),这表明ANSI实现不支持它

对于gcc,您也可以使用-std=c90强制使用C90