如何在Visual C ++ Express 2008上禁用界面关键字?

问题描述 投票:6回答:6

我在这里编译遗留的C代码,并且有很多名为“ interface”的变量和结构成员,但是VC2008 express抱怨这些,您知道如何禁用它吗?

我已经更改设置以仅将代码编译为C代码,但对此没有影响。

c visual-studio-2008
6个回答
4
投票

做一个

#define interface QQInterface

在您的代码之前(例如,在头文件中),这样在使用关键字接口的任何地方,编译器都会看到“ QQInterface”,它不是关键字。如果所有代码都包含此定义,则不会出现编译器或链接器错误。


5
投票

问题是MS#定义了结构的接口,这样

interface Name {...}

可以在COM c ++代码中使用。(objbase.h:199:#define interface __STRUCT__

仅在包含Windows.h之后才#undef interface ..


4
投票

如果您尝试编译合理的可移植C代码,则可能需要禁用Microsoft语言扩展(在命令行中使用/ Za,在VS中配置属性> C / C ++>语言,然后查看代码是否可以编译。] >


1
投票

“ interface” a不应是C或ISO C ++中的关键字。它在C ++的Managed Extensions中是一个关键字,因此,我想,在您配置的某个位置,您仍在告诉它为.NET创建代码。确保所有地方都设置为“本地代码”


0
投票
我在编译包含dbus头文件的C ++代码时遇到了类似的问题。由于dbus具有使用“接口”作为I / P参数名称(恰好是C ++关键字)的几种功能,因此出现以下错误:error: expected ',' or '...' before 'struct'

0
投票
您可以定义WIN32_LEAN_AND_MEAN以避免包含此定义。参见MSDN Docs
© www.soinside.com 2019 - 2024. All rights reserved.