gpt4 book ai didi

C - "static"函数的函数原型(prototype)和定义不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:02 24 4
gpt4 key购买 nike

我正试图找到一些关于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com