3

教程

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

是什么原因?对功能有什么影响?

4

1 回答 1

5

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

现在,如果您将static关键字应用于另一个块/函数内的函数声明,从语义上讲,您正试图将函数的范围限制为该特定块/函数,这违反了声明该static函数的语言规则,而不管其申报地点,应有档案范围。

因此,标准可能禁止这样的声明。

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

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

于 2012-07-12T09:24:26.547 回答