块内的静态函数声明

时间:2012-07-12 09:06:32

标签: c

A tutorial

  

您不能将块中的函数声明为静态。

是什么原因?它如何影响功能?

1 个答案:

答案 0 :(得分:5)

static应用于函数意味着该函数具有内部链接。即只能在此文件中访问它。换句话说,它有文件范围。无论您是在另一个函数内部还是在所有函数之外声明函数,此链接都适用。

现在,如果您将static关键字应用于其他块/函数中的函数声明从语义上讲,则您试图限制范围该特定块/函数的函数违反了声明static函数的语言规则,无论其声明位置如何,都应具有文件范围。

因此,标准可能禁止此类声明。

PS :最新C11标准中30中的脚注6.2.3 -

  

函数声明可以包含存储类说明符 static   只有在文件范围内;