C++标准中的预处理器宏

Mas*_*man 0 c++ c-preprocessor c++11

我很惊讶地发现它ATOMIC_FLAG_INIT被描述为C++ 11标准中定义的预处理器宏.这是一个例外,还是新的C++标准真的涵盖了预处理器步骤?

对我来说,预处理器本身就是一种实用的语言,现在的趋势似乎是不鼓励使用它.

You*_*You 7

当然,C++标准涵盖了预处理器; 事实上,标准中有一整章.翻译的第三和第四阶段主要涉及预处理器.

C++标准还指定了许多预定义的宏 ; assert也是一个宏,就像你发现的原子初始化器一样.

仍然存在宏有用的情况,但是最近的C++标准的constexpr功能(例如函数/变量)更好地涵盖了许多最常见的用例.