1

Visual C++ 2008 给了我这个奇怪的错误,所以我删除了头文件 (util.h) 中所有多余的东西,归结为:

#ifndef UTIL_H
#define UTIL_H

void pause();

#endif

当我尝试编译上面的代码时,我得到了这个:

Compiling...
util.cpp
util.h(4) : error C2144: syntax error : 'void' should be preceded by ';'
util.h(4) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
<snip>

我很困惑。即使我注释掉 ifndef、define 和 endif、预处理器指令,它仍然说同样的话。

4

1 回答 1

5

经过几个小时的寻找,我终于弄明白了!

错误不在头文件本身。头文件被复制并粘贴到包含它们的源文件中。所以我查看了包含文件的位置,并在 util.cpp 中看到:

#include "stdafx.h"b
#include "util.h"
<snip>

额外'b'的导致错误。C++ 认为它是一个变量,但没有看到类型说明符,因此它假定它'b'是一个新整数。';'然后它认为我应该用to结束它的声明'void'。整个问题只是一个愚蠢的额外字符,并且是一个不是很有帮助的错误消息。

于 2013-07-29T18:01:43.590 回答