如何在Visual Studio 2013+中编译包含"interface"作为变量名的程序

How to compile program that contains "interface" as variable name in Visual Studio 2013+

本文关键字:interface 变量名 程序 包含 编译 Visual Studio 2013+      更新时间:2023-10-16

似乎在最后的Visual Studio interface现在是某种关键字。我真的不知道为什么,我也不能在c++或c++ 11标准中找到这样的关键字,但是使用名称为"interface"的变量会产生以下错误:

error C2332: 'struct' : missing tag name

将变量从interface重命名为my_interface之类的东西解决了问题,但是没有一种方法可以编译它而无需修改代码吗?

实际上interface不是由标准定义的c++关键字,它是Visual Studio中的扩展(据我所知,它一直追溯到VS2005)。因此,如果其他编译器没有这样的扩展,则无法在它们上编译,在这种情况下,您必须删除它。

这里描述了用c++标准方式声明接口的各种方法

编辑
似乎我误解了你的问题,你反而想使用名为interface的变量,而没有Visual Studio认为你正在声明一个接口。

在这种情况下,使用/Za标志来禁用编译器扩展。

看起来像是visual studio的c++扩展:

https://msdn.microsoft.com/en-us/library/737cydt1.aspx

尝试禁用语言扩展(通过传递a/Za):

https://msdn.microsoft.com/en-us/library/0k0w269d.aspx