当我在定义 epsilon 之前包含算法库时,会编译以下代码:
#include <iostream>
#include <algorithm>
#define epsilon 0.00001
int main() {
std::cout << epsilon;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我切换它们时,它不会:
#include <iostream>
#define epsilon 0.00001
#include <algorithm>
int main() {
std::cout << epsilon;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给出了以下错误 19 次:
epsilon_algorithm.cpp:3:17: error: expected unqualified-id before numeric constant
3 | #define epsilon 0.00001
|
Run Code Online (Sandbox Code Playgroud)
在http://www.cplusplus.com/reference/algorithm/和https://en.cppreference.com/w/cpp/algorithm上没有提到任何名为“epsilon”的东西。我知道我可以通过在定义 epsilon 之前简单地始终包含 <algorithm> 来避免这个问题,我想知道是什么导致了这个错误,以扩大我对 C++ 的理解并防止将来出现这些类型的错误。
我在更新的 Windows 10(64 位)环境中使用 MinGW(32 位,几周前安装)进行编译。