编译错误的代码的编译
问题描述:
头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
我试图编译一个包含“fml32.h”的.cpp文件。这是从fml32.h中抛出一个错误:
error: '_TMIFML32' does not name a type
TMENV_H没有在任何地方定义。试图从标题2发表评论#ifndef TMENV_H
及其,因为我怀疑控件未达到#define _TMIFML32
。但仍然是同样的错误。任何人都可以帮忙吗?会很感激。
答
也许你应该试着把你的头部名称放在“”(“localheader.h”)中,如果它在本地目录中的话。 (当然,这应该是一个评论)。
顺便说一句,根据cppreference:
- 以双下划线的任何位置被保留的标识符;
- 标识符以下划线开头,后面跟着大写字母 字母被保留;
- 在全局命名空间中保留以下划线 开头的标识符。
什么让你确定“TMENV_H没有在任何地方定义”? – Ap31
'tmenv.h'包含'fml32.h'吗? –
'#ifndef TMENV_H'所属的唯一位置就是*'tmenv.h'中的头文件*。为什么不(a)在'fml32.h'中删除一个,并且(b)打一个'#error这个更好的puke' *在* tmenv.h'的头文件中,然后编译并查看它是否跳转。如果没有,那么其他人已经定义了这个宏,或者那个头不是你正在使用的那个。 – WhozCraig