As I know there are two ways to declare a constant variable visible only in one file:
- Declare
static const int VARIABLE = 1
- Declare it in a unnamed namespace:
namespace { const int VARIABLE = 1; }
So what's the difference?
As I know there are two ways to declare a constant variable visible only in one file:
static const int VARIABLE = 1
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.