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 precedeで宣言を終了する必要があると考え'void'ます。全体の問題は、単なるばかげた余分な文字であり、あまり役に立たないエラー メッセージです。

于 2013-07-29T18:01:43.590 に答える