web-dev-qa-db-ja.com

'winbase.h'のコンパイルエラー

winbase.hをコンパイルすると、Windowsファイルで次のエラーが発生します。

構文エラーが発生し、コンパイラーにさらに多くのエラーが表示される理由がわかりません。

1> c:\program files\Microsoft sdks\windows\v6.0a\include\winbase.h(238) : 
   error C2146: syntax error : missing ';' before identifier 'Internal'

ここに問題を再現するための簡単なコードがあります:

#include <winbase.h>

int main()
{
    return 0;
}
25
jdl

<winbase.h>を直接含めていますか?

すべきではありません-処理される前に、いくつかのことが定義/宣言されることを期待しています。具体的には、この場合、ULONG_PTRでtypedefとして宣言されている識別子intsafe.hです。

<windows.h>を含めます。

56
Michael Burr

コードの;行の直前に#include <windows.h>がない可能性があります。または、インクルードファイルの行の前に識別子のようなテキストがあります。

int ABC
#include <windows.h>
3

コードに問題がなく、#include "winbase.h"の前にセミコロンがない場合は、winbase.h(またはそれを含むファイルの1つ)の前にインクルードがないはずです。

1