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,预处理器指令,它仍然说同样的事情。
答案 0 :(得分:5)
看了几个小时后,我终于明白了!
错误不在头文件本身中。头文件被复制并粘贴到包含它们的源文件中。所以我查看了包含文件的位置,我在util.cpp中看到了:
#include "stdafx.h"b
#include "util.h"
<snip>
额外'b'
导致错误。 C ++认为它是一个变量,但没有看到类型说明符,所以它假定'b'
是一个新的整数。然后它认为我应该在';'
之前用'void'
终止其声明。整个问题只是一个愚蠢的额外字符,并且是一个不太有用的错误信息。