Tag: 联动

块范围链接C标准

以下标识符没有链接:声明为对象或函数以外的任何标识符; 声明为函数参数的标识符; 在没有存储类说明符extern的情况下声明的对象的块作用域标识符 。 { static int a; //no linkage } 对于在该标识符的先前声明可见的范围内使用存储类说明符extern声明的标识符,如果先前声明指定内部或外部链接,则后面声明中的标识符的链接与链接相同在先前声明中指明。 如果没有先前声明可见,或者先前声明未指定链接 , 则标识符具有外部链接 。 { static int a; //no linkage extern int a; //a should get external linkage, no? } GCC错误:没有链接的以下声明的extern声明 有人可以解释我为什么会出现这个错误? 谢谢

在“C”头文件中声明的静态函数

对我来说,在源文件中定义和声明静态函数是一个规则,我的意思是.c文件。 然而,在极少数情况下,我看到人们在头文件中声明它。 由于静态函数具有内部链接,我们需要在包含声明函数的头文件的每个文件中定义它。 这看起来很奇怪,远非我们通常在将某些东西声明为静态时所需要的。 另一方面,如果有人天真地尝试使用该function而没有定义它,编译器将会投诉。 所以从某种意义上来说,即使听起来很奇怪也不是真的不安全。 我的问题是: 在头文件中声明静态函数有什么问题? 有什么风险? 编译时间有什么影响? 运行时有任何风险吗?