Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
预处理器宏和std::source_位置之间的差异 P>预处理宏(在C和C++标准中指定),例如分别在代码预处理过程中用代码和文件名代替代码。在C++20中,引入了一个新的类std::source\u location,它的作用大致相同 所以,我的问题是。。。 它们之间有什么区别 它们的优点和缺点是什么 我应该用哪一个?出于什么原因_C++_C++20_C++ Faq - Fatal编程技术网

预处理器宏和std::source_位置之间的差异 P>预处理宏(在C和C++标准中指定),例如分别在代码预处理过程中用代码和文件名代替代码。在C++20中,引入了一个新的类std::source\u location,它的作用大致相同 所以,我的问题是。。。 它们之间有什么区别 它们的优点和缺点是什么 我应该用哪一个?出于什么原因

预处理器宏和std::source_位置之间的差异 P>预处理宏(在C和C++标准中指定),例如分别在代码预处理过程中用代码和文件名代替代码。在C++20中,引入了一个新的类std::source\u location,它的作用大致相同 所以,我的问题是。。。 它们之间有什么区别 它们的优点和缺点是什么 我应该用哪一个?出于什么原因,c++,c++20,c++-faq,C++,C++20,C++ Faq,预处理器宏位于类型系统之外。预处理器宏替换发生在语言的其余部分之外。有关使用预处理器的缺点的全面讨论,请参见和 STD::SooSyLyLoad < /Cord>另一方面,它的行为与任何其他C++结构类似。它具有类型化的纯值字段,其行为与语言中的任何其他值类似 除此之外,这两种机制在功能上是等效的。一方所能实现的任何事情都不是另一方所不能完成的(除了在源位置,它在预处理器中没有等价物)。只是新方法更完美地实现了它的目标。如上所述,“其目的是源位置的大小较小,并且可以有效地复制。一个区别是,对于

预处理器宏位于类型系统之外。预处理器宏替换发生在语言的其余部分之外。有关使用预处理器的缺点的全面讨论,请参见和

<代码> STD::SooSyLyLoad < /Cord>另一方面,它的行为与任何其他C++结构类似。它具有类型化的纯值字段,其行为与语言中的任何其他值类似


除此之外,这两种机制在功能上是等效的。一方所能实现的任何事情都不是另一方所不能完成的(除了在
源位置
,它在预处理器中没有等价物)。只是新方法更完美地实现了它的目标。

如上所述,“其目的是源位置的大小较小,并且可以有效地复制。一个区别是,对于
std::source\u位置
对象,您不再需要“丑陋”的宏来完成许多事情,您可以使用简单的函数(如中所示)。您不能用另一个标记粘贴
源位置
行。使用
\uu行
这是一种创建唯一标识符的方法。@n.“代词m:有一种方法可以创建不带宏的唯一标识符。(使用lambda键入模板)@Jarod42不是标识符;)它99%的时间都能工作,但是你不能用这种方法创建枚举。不过,可能还有其他方法可以实现任何特定的结果。