2016-12-16 6 views
0

ヘッダ1の間に "タイプを指していない":fml32.hのコンパイルエラーコードのコンパイル

#ifndef TMENV_H 
#include <tmenv.h> 
#endif 

_TMIFML32 extern  char *Femsgs32[]; 

ヘッダー2:

#ifndef TMENV_H 
#define TMENV_H 1 

#define _TMIFML32 
#endif 

tmenv.h私は "fml32.h"を含む.cppファイルをコンパイルしようとしています。 fml32.hからエラーが返されています:

error: '_TMIFML32' does not name a type 

TMENV_Hはどこにも定義されていません。コントロールが#define _TMIFML32に届かないと疑われていたので、#ifndef TMENV_Hとそのendifをヘッダー2からコメントしようとしました。しかし、同じエラーです。誰もこれを助けることができますか?本当に感謝していますか?

+0

"TMENV_Hはどこにも定義されていません" – Ap31

+0

'tmenv.h'に' fml32.h'が含まれていますか? –

+3

'#ifndef TMENV_H'が所属するのは、' tmenv.h'の中の*ヘッダガードです。そして、マクロを(ヘッダ内で)テストする唯一の場所をコメントするのではなく、(f) 'fml32.h'の中のマクロを削除し、(b)' #error This better puke ' * temv.hのヘッダーガードの中で*コンパイルして、それが動くかどうか確認してください。そうでない場合は、他の誰かがすでにそのマクロを定義しているか、そのヘッダがあなたが消費しているものではありません。 – WhozCraig

答えて

0

ローカルディレクトリにある場合は、ヘッダー名を ""( "localheader.h")に囲まなければならないことがあります。 (これはもちろんコメントです)。


ところで、cppreferenceに従って:

  • どこに予約されている二重下線付きの識別子。
  • アンダースコアで始まり、その後に大文字の 文字で始まる識別子は予約されています。
  • アンダースコアで始まる識別子が の場合、グローバル名前空間に予約されます。