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

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

z = 1.0/(far - near);

错误:

error C2059: syntax error : ')'

如何禁用此“功能”?

【问题讨论】:

    标签: visual-studio visual-c++ syntax-error


    【解决方案1】:

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

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

    #undef far
    #undef near
    

    【讨论】:

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