2011-09-09 51 views
1

我想編寫一個簡單的C90代碼利用數學庫C90代碼:鏈接數學庫使用GCC

的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標準是否禁止使用數學庫?

回答

5

當需要嚴格的iso標準時,未定義M_PI。在三角函數下查看this頁面。建議在使用-ansi時,自己定義它:

#define M_PI 3.14159265358979323846264338327 
2

M_PI通常聲明爲一個宏,有一個明確的約束#if !defined(_ANSI_SOURCE)(至少在OSX),這表明ANSI實施犯規支持

海合會你也可以使用-std=c90強制C90