C++ 使用“时出现编译器错误”;近;作为变量名
我的代码中有一个非常奇怪的错误。我用C++创建了这个类:C++ 使用“时出现编译器错误”;近;作为变量名,c++,compiler-errors,C++,Compiler Errors,我的代码中有一个非常奇怪的错误。我用C++创建了这个类: class Tester{ float f; Tester(float,float); }; 我是这样实现的: Tester::Tester(float near,float a){ this->f=near/a; } 我得到以下错误: ..\src\Tester.cpp: In constructor 'Tester::Tester(float, float)': ..\src\Tester.cpp:4
class Tester{
float f;
Tester(float,float);
};
我是这样实现的:
Tester::Tester(float near,float a){
this->f=near/a;
}
我得到以下错误:
..\src\Tester.cpp: In constructor 'Tester::Tester(float, float)':
..\src\Tester.cpp:4:14: error: expected primary-expression before '/' token
this->f=near/a;
^
当我将near
重命名为其他名称时,错误消失。这当然没什么大不了的,因为我可以重命名变量,但我只是好奇你们中是否有人知道原因
更新:
原因是
windef.h
的加入。它是由windows.h
通过wglext.h
包含的。似乎编译器在某些头中将near定义为宏。通常,此宏与“近”指针一起使用 编译器似乎在某些头中将near定义为宏。通常,此宏与“近”指针一起使用 也许可以试试#undef near?你可能想提到你正在使用的平台和工具链。这很可能会有影响。也许还可以尝试公开构造函数。对我来说,这些都是过去糟糕的远近记忆寻址的遗留问题。谢谢,我刚刚发现,#undef也工作得很好。我不知道内存关键字。也许试试#undef near?你可能想提到你正在使用的平台和工具链。这很可能会有影响。也许还可以尝试公开构造函数。对我来说,这些都是过去糟糕的远近记忆寻址的遗留问题。谢谢,我刚刚发现,#undef也工作得很好。我不知道记忆关键字。