What is the difference between declaring a static constant and a constant into unnamed namespace?

StackOverflow https://stackoverflow.com/questions/23631778

質問

As I know there are two ways to declare a constant variable visible only in one file:

  1. Declare static const int VARIABLE = 1
  2. Declare it in a unnamed namespace:
namespace { const int VARIABLE = 1; }

So what's the difference?

役に立ちましたか?

解決

Since it's const, then both have internal linkage, and there is no difference. So let's consider the more interesting case where it's not const.

In that case, then practically, there's little difference.

Technically, the first would have internal linkage, so the name can't be accessed from another translation unit; the second would have external linkage, but can't be accessed from another translation unit since its surrounding namespace can't be named.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top