2016-12-16 2 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 어디서나 정의되어 있지 않습니다. #ifndef TMENV_H 및 그 endif은 머리말 2에서 사용했음을 알리려고했는데 그 이유는 컨트롤이 #define _TMIFML32에 도달하지 못했기 때문입니다. 그러나 여전히 같은 오류. 누구든지이 일을 도울 수 있습니까? 정말로 감사 할 것입니다.

+0

"TMENV_H는 (는) 어디에도 정의되어 있지 않습니까?" – Ap31

+0

'tmenv.h'는'fml32.h'를 포함합니까? –

+3

'#ifndef TMENV_H'가 속한 곳은'tmenv.h '안의 헤더 가드입니다. 매크로가 테스트되어야하는 유일한 곳 (매크로)을 주석으로 처리하는 대신, (f)'fml32.h'에서 매크로를 제거하고 (b)'#error This better puke ' * 내부 * tmenv.h의 헤더 가드 (header guard). 그렇지 않다면 다른 누군가가 이미 매크로를 정의했거나 그 헤더가 여러분이 소비하고있는 매크로가 아닙니다. – WhozCraig

답변

0

로컬 디렉토리에있는 경우 헤더 이름을 ""("localheader.h")로 묶어야합니다. (물론 이것은 주석이어야합니다).


BTW, cppreference에있어서

  • 어딘가에 보유되어 이중 밑줄 식별자;
  • 식별자가 밑줄로 시작하고 그 뒤에 대문자 인 문자가 예약됩니다.
  • 밑줄로 시작하는 식별자는이며 전역 이름 공간에 예약되어 있습니다.