我正试图找到一些关于 C 函数理论的官方确认。在我的一个简单项目中,我有一个函数,我只想在定义它的 .c
文件中可见。函数原型(prototype)为:
static int sum(int a, int b);
函数定义为:
int sum(int a, int b) {
return (a+b);
}
根据对构建输出、链接映射等的分析,该函数似乎确实是静态的。我很惊讶我也没有收到任何构建警告或错误。但是,在文档方面是否有任何内容(即:GCC 手册中的特定行)可以确认此行为或预期的内容?
我已经找到了这个 C++ 问题的等价物 ( Static keyword in function declaration can be missing in function definition? ),但我正在寻找关于纯 C 的答案。
谢谢。
最佳答案
您可以从 http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=57853 下载完整规范
238 瑞士法郎,我相信会有答案。否则,我拥有的最佳资源来自 K&R 的“The C Programming Language”第 2 版,第 83 页的第 4.6 节(添加了重点)
“外部静态声明最常用于变量,但它也可以应用于函数。通常,函数名称是全局的,对整个程序的任何部分可见。如果一个函数是声明静态的,但是,它的名称在声明的文件之外是不可见的。”
请注意,引号仅指函数的声明,而不是函数的定义,尽管静态函数的常见做法是定义也用作声明。
关于C - "static"函数的函数原型(prototype)和定义不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22307991/