现在有了内联变量,extern const还是有用吗?

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

我习惯于编写这种代码:

//myInclude.h
extern const Type var;
//mySource.cpp
#include "myInclude.h"
const Type var = ...;

...但是现在我可以写

//myInclude.h
inline const Type var = ... ;

extern const还是extern仍然有用? inline变量是否已过时?

c++ inline extern c++20
1个回答
0
投票

[inline尚未使extern const成为过时,因为它们不是“正交的”。]]

externinline应用于示例中非模板const变量的声明为var时,请声明var没有内部链接。我想这就是为什么人们可能会认为inline使extern没有用。

但是externinline也有不同的语义:

  • extern出现在声明中时,表示该声明不是定义。它并不一定意味着该变量不是内联变量,也不是在另一个翻译单元中定义。

  • [inline表示声明是一个定义,并且该定义可以出现在其他翻译单元中。

  • 因此,当extern const变量声明可以出现在特定的翻译单元中时,它可能仍然是用完的。这对于提高编译速度仍然非常有用。

extern的另一种用法是用于const变量的正向声明。甚至constexpr的前向声明:

 extern const int var;
 // some code that odr-use var
 inline constexpr int var = 10;
    
© www.soinside.com 2019 - 2024. All rights reserved.