标题包括但声明仍然缺失?

时间:2010-02-21 22:19:36

标签: c gcc mingw

这是一个简单的例子:

#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。

1 个答案:

答案 0 :(得分:1)

使用MinGW 3.4.5,您的代码段可以正常使用

您确定正确设置了包含文件路径吗?也许正在处理错误的stdlib.h。或者,也许MingGW没有定义__MSVCRT__这是获得该函数原型所必需的(MinGW似乎自动为我定义 - 我不确定如何将其关闭)。


编辑:

tyranid的评论似乎有答案 - 如果我指定-ansi选项,我会得到与您的示例中完全相同的错误集。

设置为CW并在tyranid发布答案时删除。