使用变量名时触发编译错误 我使用C++的Rational Rose工具。定义了包含单词接口的变量名后,该工具将停止工作并打印出一条空白错误消息

使用变量名时触发编译错误 我使用C++的Rational Rose工具。定义了包含单词接口的变量名后,该工具将停止工作并打印出一条空白错误消息,c++,compiler-warnings,C++,Compiler Warnings,这里可以看到支持问题: 我想添加一个预处理器指令,这样当使用变量名接口时,将显示编译错误 大致如下: #define interface #error The Keyword interface is not permitted 不能在预处理器语句中使用预处理器语句 但是,您可以通过以下方式强制编译器出错: #define interface -ERROR_interface_is_a_reserved_symbol 在windows MS编译器上,这将指向出现错误的代码行: yourfi

这里可以看到支持问题:

我想添加一个预处理器指令,这样当使用变量名接口时,将显示编译错误

大致如下:

#define interface #error The Keyword interface is not permitted

不能在预处理器语句中使用预处理器语句

但是,您可以通过以下方式强制编译器出错:

#define interface -ERROR_interface_is_a_reserved_symbol
在windows MS编译器上,这将指向出现错误的代码行:

yourfile.cpp(82): error C2065: 'ERROR_interface_is_a_reserved_symbol' : undeclared identifier
我同意这里的其他人的观点,尽管这似乎是解决你问题的错误地点


编辑:正如DeadMG所指出的,只有在寻找精确的变量名而不是部分匹配时,此解决方案才有效

不能使用预处理器获得部分匹配。如果我编写IInterface、EInterface和iLikeBigInterfaceSandCannotlie,那么您不能使用预处理器来匹配它们。

您想使用预处理器用第三方工具修复bug吗?为什么我觉得这显然是错误的方法?我希望我们也可以使用另一个工具,但目前公司的政策是使用IBM工具集。这个解决方案不太管用。我尝试添加define,但由于define可以是一个有效的变量名,它将所有单词interface替换为ERROR\u interface\u is\u reserved\u symbol,并且所有内容都成功编译。我对其进行了修改,使define包含了两次,并且有效:define interface ERROR\u interface\u is\u reserved\u symbol ERROR\u interface\u is\u reserved\u symbola,抱歉,为您提供了类型名称和关键字的变体。我更新了答案。您的解决方案是可行的,但MS编译器在符号前添加一个“-”就足够了。它破坏了类型规范,因此变量名被报告为未声明的。在前面添加-也不太管用。虽然代码无法编译,但给出的错误消息不会打印错误\接口\是\保留\符号消息,至少在使用GCC时是这样。这可能是错误的。我猜关键在于找到特定编译器的工作方式。这是给女士的,我不需要全部匹配。只是精确的单词界面。