我们可以在头文件中包含静态变量吗? 如果是,其他文件是否可以访问它?
我们可以在头文件中包含静态函数,并在其他文件中使用它。
我们可以将静态变量作为函数参数传递吗?假设头文件header.h中有一些函数:
fun(static int a,static int b)
答案 0 :(得分:1)
在具有说明符static
的全局命名空间中声明的任何名称都具有内部链接。这意味着该名称在声明它的翻译单元中可见。
因此,如果带有静态关键字名称声明的标题包含在多个翻译单元中,那么每个翻译单元将拥有自己的具有此名称的变量。
答案 1 :(得分:1)
在头文件中使用静态变量是不正确的编码习惯。 static也将变量的范围限制为文件。因此,无法从file2.c访问file1.c的静态变量
答案 2 :(得分:1)
您可以在头文件中声明静态变量,但此变量范围只是包含此头文件的* .c文件。
答案 3 :(得分:0)
可以在头文件中定义静态变量。但是这样做,结果将是每个源文件中包含标题的该变量的私有副本文件。因此,最好不要在头文件中声明静态变量,除非您正在处理不同的场景。
同样适用于静态功能。
尝试将静态应用于函数参数没有多大意义,因此标准不允许(§6.7.5.3/ 2:“唯一的存储类应在参数声明中出现的说明符是寄存器。“) 尝试输入静态变量作为参数类型会导致错误。