我在这里编译遗留的C代码,并且有很多名为“ interface”的变量和结构成员,但是VC2008 express抱怨这些,您知道如何禁用它吗?
我已经更改设置以仅将代码编译为C代码,但对此没有影响。
做一个
#define interface QQInterface
在您的代码之前(例如,在头文件中),这样在使用关键字接口的任何地方,编译器都会看到“ QQInterface”,它不是关键字。如果所有代码都包含此定义,则不会出现编译器或链接器错误。
问题是MS#定义了结构的接口,这样
interface Name {...}
可以在COM c ++代码中使用。(objbase.h:199:#define interface __STRUCT__
)
仅在包含Windows.h之后才#undef interface
..
如果您尝试编译合理的可移植C代码,则可能需要禁用Microsoft语言扩展(在命令行中使用/ Za,在VS中配置属性> C / C ++>语言,然后查看代码是否可以编译。] >
“ interface” a不应是C或ISO C ++中的关键字。它在C ++的Managed Extensions中是一个关键字,因此,我想,在您配置的某个位置,您仍在告诉它为.NET创建代码。确保所有地方都设置为“本地代码”
error: expected ',' or '...' before 'struct'
。