c – 可以在.h文件中声明静态全局变量吗?

static关键字将全局变量的范围限制为该转换单元.
如果我在.h文件中使用static int x并且每隔一个文件包含该.h文件,它们是否都属于同一个翻译单元?
那么,到处都不会出现x吗?
那么静电的作用是什么?

另外,有没有使用静态const int x,其中x是一个全局变量?
默认情况下,并非所有const全局变量都是静态的
并且const变量的范围仅限于TU,即使它被限制在文件中的for循环中?

解决方法:

如果你写

static const int x

在.h文件中,#include -s这个.h的每个翻译单元都有自己的私有变量x.

如果您希望每个人都能看到1个全局变量,那么您应该编写

extern const int x;

在.h文件中

const int x = ...;

在其中一个.cpp文件中.

如果你想让一个静态const int只对一个翻译单元可见 – 根本不要在.h文件中提及它.

上一篇:c – extern存储类说明符


下一篇:2.4 const 限定符号