这是一个简单的例子:
#include <stdlib.h>
int main(void) {
_set_error_mode(_OUT_TO_STDERR);
return EXIT_SUCCESS;
}
编译此程序时,我遇到以下问题:
main.c: In function 'main':
main.c:4: error: implicit declaration of function '_set_error_mode'
main.c:4: error: '_OUT_TO_STDERR' undeclared (first use in this function)
main.c:4: error: (Each undeclared identifier is reported only once
main.c:4: error: for each function it appears in.)
标题 包含函数声明和宏:
_CRTIMP int __cdecl __MINGW_NOTHROW _set_error_mode (int);
# define _OUT_TO_STDERR 1
为什么我会收到错误?请注意,我还使用了同一EXIT_SUCCESS
标头中定义的stdlib.h
宏,但由于某种原因,GCC不会抱怨它。奇
我在Vista机器上使用MinGW + GCC。
答案 0 :(得分:1)
使用MinGW 3.4.5,您的代码段可以正常使用
您确定正确设置了包含文件路径吗?也许正在处理错误的stdlib.h
。或者,也许MingGW没有定义__MSVCRT__
这是获得该函数原型所必需的(MinGW似乎自动为我定义 - 我不确定如何将其关闭)。
编辑:
tyranid的评论似乎有答案 - 如果我指定-ansi
选项,我会得到与您的示例中完全相同的错误集。
设置为CW并在tyranid发布答案时删除。