使用变量名时触发编译错误

发布于 2024-11-15 05:08:18 字数 432 浏览 2 评论 0原文

我正在使用一个名为 Rational Rose for C++ 的工具。当定义包含单词“interface”的变量名称时,该工具将停止工作并打印出空白错误消息。

支持问题可以在这里看到: https://www-304.ibm.com/support /docview.wss?uid=swg21271841&wv=1

我想添加一个预处理器指令,以便当变量名称使用“interface”时,会显示编译错误。

大致如下:

#define interface #error The Keyword interface is not permitted

I am using a tool called Rational Rose for C++. When a variable name which includes the word "interface" is defined, the tool stops working and prints out a blank error message.

The support issue can be seen here:
https://www-304.ibm.com/support/docview.wss?uid=swg21271841&wv=1

I would like to add a preprocessor directive such that when the variable name "interface" is used, a compile error will be displayed.

Something along the lines of:

#define interface #error The Keyword interface is not permitted

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一杯敬自由 2024-11-22 05:08:18

您不能在预处理器语句内使用预处理器语句。

但是,您可以按照以下方式强制编译器错误:

#define interface -ERROR_interface_is_a_reserved_symbol

在 Windows(MS 编译器)上,这会将您指向包含错误的代码行:

yourfile.cpp(82): error C2065: 'ERROR_interface_is_a_reserved_symbol' : undeclared identifier

会同意这里的其他人,尽管这似乎是解决问题的错误位置。

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

You can't use preprocessor statements inside preprocessor statements.

However, you can force a compiler error along these lines:

#define interface -ERROR_interface_is_a_reserved_symbol

On windows (MS compiler) this would point you to the code line with the error:

yourfile.cpp(82): error C2065: 'ERROR_interface_is_a_reserved_symbol' : undeclared identifier

Would agree with others here though that it seems to be the wrong place for a solution to your problem.

EDIT: As pointed out by DeadMG, this solution would only work if you're looking for exact variable names, rather than partial matches.

百合的盛世恋 2024-11-22 05:08:18

您不能使用预处理器来获得部分匹配。如果我编写 IInterfaceEInterfaceIlikeBigInterfacesAndICannotLie,那么您无法使用预处理器来匹配它们。

You can't use the preprocessor to gain partial matches. If I write IInterface and EInterface and ILikeBigInterfacesAndICannotLie, then you cannot use the preprocessor to match them all.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文