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