2016-12-16 2 views
0

Заголовок 1: fml32.hОшибка компиляции "Не имя типа" во время компиляции кода

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

_TMIFML32 extern  char *Femsgs32[]; 

Заголовок 2: tmenv.h

#ifndef TMENV_H 
#define TMENV_H 1 

#define _TMIFML32 
#endif 

Я пытаюсь скомпилировать .cpp-файл, который включает в себя «fml32.h». Он бросает ошибку от 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'. И вместо того, чтобы комментировать только то место, в котором должен быть протестирован макрос (в заголовке), почему бы вам (а) не удалить его в 'fml32.h' и (b) пощекотать' #error Это лучше puke' * внутри * защита заголовка 'tmenv.h', затем скомпилировать и посмотреть, будет ли он отключен. Если это не так, то кто-то еще определил этот макрос уже, или этот заголовок не тот, который вы потребляете. – WhozCraig

ответ

0

Возможно, вам стоит попытаться заключить ваше имя заголовка в "" ("localheader.h"), если оно находится в локальном каталоге.? (это, конечно, должно быть комментарий).


Кстати, согласно cppreference:

  • идентификаторов с двойным подчеркиванием в любом месте зарезервированы;
  • идентификаторы, начинающиеся с символа подчеркивания, за которым следует прописная буква ;
  • идентификаторы, начинающиеся с символа подчеркивания , зарезервированы в глобальном пространстве имен.