error C2146: syntax error : missing ';' before identifier 'g_var'
在a.cpp中定义 CXX g_var;
在b.cpp中用extern CXX g_var; 报错。
g_var前面的类型无法识别,这种菜鸟问题,原来是应该在用extern CXX g_var; 之前,将CXX的声明告诉编译器。
不要忽视这些小问题。
同样,在MFC向导生成的程序中。MFC会自动定义:
class CTsStyleApp : public CWinApp
{
public:
CTsStyleApp();
// 重写
public:
virtual BOOL InitInstance();
// 实现
DECLARE_MESSAGE_MAP()
};
extern CTsStyleApp theApp;
假如将extern CTsStyleApp theApp; 移动到 CTsStyleApp 类的声明前面,会出现
1>f:\powervss_zkx\tsstyle\tsstyle\tsstyle.h(16) : error C2146: 语法错误 : 缺少“;”(在标识符“theApp”的前面)
1>f:\powervss_zkx\tsstyle\tsstyle\tsstyle.h(16) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>f:\powervss_zkx\tsstyle\tsstyle\tsstyle.h(16) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
.....
是同一个道理