我有简单的测试代码,t.c
:
#include <stdio.h>
#include <math.h>
int main(){
printf("%f\n", M_LN10);
}
在我的一个系统(OS X 10.8.4,GCC 4.8.1)上,它编译得很好。奇怪的是,在另一个系统(Ubuntu 12.04.2 LTS,GCC 4.6.3)上,这编译得很好gcc t.c
,但如果我这样做,gcc -std=c99 t.c
我会得到:
t.c: In function ‘main’:
t.c:5:18: error: ‘M_LN10’ undeclared (first use in this function)
t.c:5:18: note: each undeclared identifier is reported only once
for each function it appears in
我认为 GCC 没有理由发现并接受M_LN10
默认math.h
C 标准没有问题,但如果强制执行 C99 则不会。知道这里发生了什么吗?