Mit*_*tch 1 c c++ enums gcc mingw
我正在构建一个需要在Windows和Linux上编译的应用程序.该应用程序是用C语言编写的,除了MinGW编译器拒绝这一点外,几乎所有工作都有效
typedef struct somestruct{
...snip...
enum {NODE, REAL} type;
};
somestruct* something;
switch (something->type){
case NODE:
...stuff...;
break;
case REAL:
...otherstuff...;
break;
}
Run Code Online (Sandbox Code Playgroud)
它说NODE和REAL没有定义,但如果我提供范围分辨率
case somestruct::NODE
Run Code Online (Sandbox Code Playgroud)
这与MinGW 3.4.1编译,但无法在linux上使用gcc 4.1.2进行编译.这只是一个需要用预处理器解决的编译器问题还是有其他解释?
该应用程序是用"C"编写的,但编译器要求你这样做somestruct::NODE,这是有效的"C++",但不是有效的"C".
结论:您在C++模式下使用MinGW编译此代码,但所有其他编译器都在C模式下编译.
可能的原因:MinGW可能不会处理foo.C和foo.c相同,并且您的文件以大写C后缀命名(这意味着UNIX上的C++).
解决方案:-xc向MinGW 添加标志以强制执行plain-C编译.
| 归档时间: |
|
| 查看次数: |
1024 次 |
| 最近记录: |