我正在阅读 gcc 中使用的标志,并阅读了使用gcc -ansi -pedantic -Wall file1 [file2 [file3...]] -o output
. 为了我的代码质量,保持它的标准,并得到所有关于它的警告。
好吧,关于使用 -ansi 编译...如果我包含<stdlib.h>
,gcc 会给我这个错误:
In file included from ansi.c:2:
C:/c/bin/../lib/gcc/mingw32/3.4.5/../../../../include/stdlib.h:317: error: syntax error before "double"
那一行是这样的:
inline double __cdecl __MINGW_NOTHROW strtod (const char* __restrict__ __nptr, char** __restrict__ __endptr)
{ return __strtod(__nptr, __endptr); }
在 C中不inline
存在?“标准”标题不应该是标准 ansi 吗?我应该删除内联还是避免使用 stdlib.h 编译(我现在真的不记得 stdlib 中有什么了)?
更新
通过阅读 Adam 发布的链接,我发现“inline”不是 C89 中的关键字,而 C89 是使用 -ansi 开关强制执行的。我不得不把它改成__inline__
一个 MinGW 宏。
谢谢您的帮助。