小编rvv*_*len的帖子

为什么我不能在 C++ 中定义“epsilon”后包含标准算法库?

当我在定义 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 位,几周前安装)进行编译。

c++ algorithm macros epsilon c++-standard-library

8
推荐指数
1
解决办法
165
查看次数

标签 统计

algorithm ×1

c++ ×1

c++-standard-library ×1

epsilon ×1

macros ×1