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 预处理器指令,它仍然说同样的话。
最佳答案
经过几个小时的寻找,我终于弄明白了!
错误不在头文件本身。头文件被复制并粘贴到包含它们的源文件中。所以我查看了包含该文件的位置,并在 util.cpp 中看到:
#include "stdafx.h"b
#include "util.h"
<snip>
那个额外的 'b'
导致了错误。 C++ 认为它是一个变量,但没有看到类型说明符,因此它假定 'b'
是一个新的整数。然后它认为我应该在 'void'
之前用 ';'
终止它的声明。整个问题只是一个愚蠢的额外字符,以及一条不是很有帮助的错误消息。
关于C++ 语法错误和缺少类型说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931026/