可以在程序中多次定义内联函数或constexpr函数吗? [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在阅读C ++ Primer书。对于像我这样的初学者,我发现它真的很有趣,也很容易理解。但是当我达到这个主题时:

“在头文件中放置内联和constexpr函数”,据说:

与其他函数不同,可以在程序中多次定义内联函数和constexpr函数。毕竟,编译器需要定义,而不仅仅是声明,以扩展代码。但是,给定内联或constexpr的所有定义必须完全匹配。因此,内联和constexpr函数通常在头文件中定义。

有人可以向我解释一下。我觉得有点难以理解。我正在自学。

正如我猜的那样,有一种叫做“ODR”的单定义规则。但是他的意思是“内联或constexpr功能可以在程序中多次定义”?

如果有人用一个例子来解释我会非常感激他。谢谢。

c++ constexpr
1个回答
3
投票

允许inlineconstexpr部分违反ODR规则:使用该函数的每个.cpp文件必须具有完全相同的函数副本。这允许您将小方法放在标头中,以便每个.cpp文件看到相同的代码,因此每个cpp文件的副本都是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.