C 在MinGW 3.4.5中使用-ansi开关的问题

C 在MinGW 3.4.5中使用-ansi开关的问题,c,gcc,header,mingw,c89,C,Gcc,Header,Mingw,C89,我正在阅读gcc中使用的标志,并阅读了使用gcc-ansi-pedantic-Wall file1[file2[file3…]-o输出的推荐。为了我的代码的质量,保持它的标准,并得到所有关于它的警告 嗯,关于用-ansi编译。。。 如果我包括,gcc会给出以下错误: ansi.c:2中包含的文件中的: C:/C/bin/./lib/gcc/mingw32/3.4.5/../../../../../../include/stdlib.h:317:错误:“double”之前的语法错误 这一行是这样的

我正在阅读gcc中使用的标志,并阅读了使用
gcc-ansi-pedantic-Wall file1[file2[file3…]-o输出的推荐。为了我的代码的质量,保持它的标准,并得到所有关于它的警告

嗯,关于用-ansi编译。。。 如果我包括
,gcc会给出以下错误:

ansi.c:2中包含的文件中的
:
C:/C/bin/./lib/gcc/mingw32/3.4.5/../../../../../../include/stdlib.h:317:错误:“double”之前的语法错误

这一行是这样的:

inline double __cdecl __MINGW_NOTHROW strtod (const char* __restrict__ __nptr, char** __restrict__ __endptr)
{ return __strtod(__nptr, __endptr); }
inline
在C中不存在吗?“标准”标题不应该是标准ansi吗?我应该删除内联还是避免使用stdlib.h编译(我现在真的不记得stdlib中有什么内容了)

更新 通过阅读Adam发布的链接,我发现“inline”在C89中不是关键字,C89是通过-ansi开关强制执行的。我不得不把它改成
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,我想这是一个MinGW宏


感谢您的帮助。

在mingw中,这似乎是一个已知的问题:

它告诉我们内联不是c89标准的一部分(因为-ansi强制它),应该用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


如果您阅读下一封电子邮件,有人会告诉您,他已经在cvs中直接修复了此错误。查看新代码并查看(?)然后告诉我们。:-)

内联不是gcc 3.4.5所认为的ANSI C的一部分-它是C99的一部分,我想你能确认你使用的是哪个版本的gcc吗?

我以前在编译到特定标准时遇到过这个问题。在我编译到的Linux系统上,pthread rwlock头与c99不兼容(或者不在ifndef中)。在这些情况下,您必须小心,在这些情况下,检查预处理器的输出有时会有所帮助。

奇怪的是,标准头会导致错误……我以为最新的MinGW版本是4.4.0?你实际上似乎在使用3.4.5.shrug我刚从安装包中得到它,“MinGW 5.1.4.exe”3.4.5----15个字符-----嗯,我从整个安装包中得到了5.1.4,上面写着5.1.4。但是我打开了一些random.ini,找到了3.4.5,所以你是对的,我猜是3.4.5。当我遇到更多问题时,我肯定会启动gcc-E input.c。