头文件中的静态存储类

时间:2015-07-09 09:07:01

标签: c static

我们可以在头文件中包含静态变量吗? 如果是,其他文件是否可以访问它?

我们可以在头文件中包含静态函数,并在其他文件中使用它。

我们可以将静态变量作为函数参数传递吗?假设头文件header.h中有一些函数:

fun(static int a,static int b)

4 个答案:

答案 0 :(得分:1)

在具有说明符static的全局命名空间中声明的任何名称都具有内部链接。这意味着该名称在声明它的翻译单元中可见。

因此,如果带有静态关键字名称声明的标题包含在多个翻译单元中,那么每个翻译单元将拥有自己的具有此名称的变量。

答案 1 :(得分:1)

在头文件中使用静态变量是不正确的编码习惯。 static也将变量的范围限制为文件。因此,无法从file2.c访问file1.c的静态变量

答案 2 :(得分:1)

您可以在头文件中声明静态变量,但此变量范围只是包含此头文件的* .c文件。

答案 3 :(得分:0)

  1. 可以在头文件中定义静态变量但是这样做,结果将是每个源文件中包含标题的该变量的私有副本文件。因此,最好不要在头文件中声明静态变量,除非您正在处理不同的场景。

  2. 同样适用于静态功能。

  3. 尝试将静态应用于函数参数没有多大意义,因此标准不允许(§6.7.5.3/ 2:“唯一的存储类应在参数声明中出现的说明符是寄存器。“) 尝试输入静态变量作为参数类型会导致错误。