Hem*_*lin 6 c++ struct global-variables extern
我有一个“unnamed-struct”类型的全局对象,我正在尝试定义它。我不想用这种无用的类型污染我的全局命名空间(它只会使用一次)。
全局.h
extern struct {
int x;
} A;
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法来定义这样的对象?
我正在尝试这个:
全局.cpp
struct {
int x;
} A = { 0 };
Run Code Online (Sandbox Code Playgroud)
但是 VS2012 抛出“错误 C2371:'A':重新定义;不同的基本类型”。谢谢。
一种可能的解决方案:创建另一个不包含Global.h 的文件 Global_A.cpp ,并A在其中定义。根据等效定义规则,只要匿名结构定义是等效的,这就是有效的。
这仍然是一个坏主意,大多数编译器都会对此发出警告,例如(gcc):warning: non-local variable `<anonymous struct> A' using anonymous type。