Visual studio VisualStudio没有';我不允许使用某些变量名

Visual studio VisualStudio没有';我不允许使用某些变量名,visual-studio,visual-c++,syntax-error,Visual Studio,Visual C++,Syntax Error,我正在使用VisualStudio2010Express。当我使用某些变量名时,比如“近”、“远”、“入”、“出”,我无法编译:我会在使用变量名之后找到语法错误。 例如: z = 1.0/(far - near); 错误: error C2059: syntax error : ')' 如何禁用此“功能”far和near是16位时代的内置编译器关键字。它们不再存在,也不再有任何意义,但出于向后兼容的原因,它们仍然在Windows标题中定义为宏 如果不需要它们,只需取消定义它们(或不包括Win

我正在使用VisualStudio2010Express。当我使用某些变量名时,比如“近”、“远”、“入”、“出”,我无法编译:我会在使用变量名之后找到语法错误。 例如:

z = 1.0/(far - near);
错误:

error C2059: syntax error : ')'

如何禁用此“功能”

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

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


谢谢,它是有效的。有没有选择关闭所有这样的关键字(这不是所有的C++标准的一部分)?@user1161552:是的,从代码中删除表示
#include
的行。它们不是关键字,它们是在Windows标题中定义的宏。刚刚遇到您的答案并想指出,这将是实现保留名称空间(名称以两个下划线开头)的完美示例是为。Microsoft在这里没有保留该名称空间是应该受到责备的。@datenwolf:但我非常确定,在最初引入这些关键字时,实现保留名称空间还不存在。:-(它们在很久以前就从Visual Studio中删除了。)@datenwolf实现保留名称空间在您希望保留与未使用它们的代码的向后兼容性时没有帮助。这可以追溯到任何人关心标准之前(而且这些标准中的大多数在一开始就不存在,人们会觉得你很可笑,因为你试图用两个下划线作为关键字的前缀,特别是当许多编译器将标识符限制为6或8个字符时)。
#undef far
#undef near