Visual Studio 不允许我使用某些变量名

Posted

技术标签:

【中文标题】Visual Studio 不允许我使用某些变量名【英文标题】:Visual Studio doesn't allow me to use certain variable names 【发布时间】:2012-01-20 22:08:49 【问题描述】:

我正在使用 Visual Studio 2010 Express。当我使用某些变量名时,例如“near”、“far”、“IN”、“OUT”,我无法编译:我在使用的变量名之后出现语法错误。 示例:

z = 1.0/(far - near);

错误:

error C2059: syntax error : ')'

如何禁用此“功能”?

【问题讨论】:

【参考方案1】:

farnear 在 16 位时代是内置的编译器关键字。它们不再存在,也不再具有任何意义,但出于向后兼容的原因,它们仍被定义为 Windows 标头中的宏。

如果您不想要它们,只需取消定义它们(或不包括 Windows 标头):

#undef far
#undef near

【讨论】:

谢谢,它有效。是否有关闭所有此类关键字的选项(这都不属于 c++ 标准的一部分)? @user1161552:是的,从代码中删除#include <windows.h> 的行。它们不是关键字,它们是在 Windows 标头中定义的宏。 刚刚看到您的答案并想指出,这将是实现保留命名空间(以两个下划线开头的名称)的完美示例。微软应该为没有遵守该命名空间负责。 @datenwolf:除了我很确定最初引入这些关键字时,实现保留的命名空间还不存在。 :-) (而且它们很久以前就从 Visual Studio 中删除了。) @datenwolf 实现保留的命名空间在您想要保持与未使用它们的代码的向后兼容性时对您没有帮助。这可以追溯到任何人关心标准之前(并且大多数这些标准一开始并不存在,人们会觉得你很有趣,因为你试图强制使用两个下划线作为关键字前缀,尤其是当标识符被限制为 6 时或许多编译器的 8 个字符)。

以上是关于Visual Studio 不允许我使用某些变量名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 的 Visual Studio Code 中选择包括 $ 在内的整个变量名?

SSRS查询获取标量变量错误,而不是在Visual Studio中使用参数

Visual Studio中的环境变量(以Visual Studio 2013为例)

Visual Studio:重命名变量时的快捷方式

在 Visual Studio 中,我可以在断点处绘制我的变量吗?

变量 args SFINAE 默认构造函数在 clang 中工作,但在 Visual Studio 2015 中失败