如果在头文件中将变量和函数声明为内联,则包含保护是否冗余?

假设我想在名为Constants.h的头文件中定义一堆数学常数。

默认情况下,常量具有内部链接,因此通过内联它们,我们可以通过外部链接来定义它们(并合法地打破一个定义规则)。

通过包含包含保护措施来强制执行ODR,因为不允许多次重复处理相同的定义。这使我想到我的问题,包括对内联常量或内联函数冗余的警卫吗?

示例

#ifndef CONSTANTS_H
#define CONSTANTS_H

namespace constants
{
    inline const double pi { 3.14159265358979323846 };
    inline const double e  { 2.71828182845904523536 };
    inline const double sqrt_2 { 1.41421356237309504880 };
}

#endif
fangchufeng 回答:如果在头文件中将变量和函数声明为内联,则包含保护是否冗余?

包含防护的存在不仅仅用于ODR。它们还会停止对同一标头的多个包含(可能是传递),从而使您的编译单元膨胀并减慢项目的编译速度-当您在40.000+个文件中有500.000+行代码时,这很重要。例如。

本文链接:https://www.f2er.com/2876716.html

大家都在问