【发布时间】:2014-03-10 18:10:48
【问题描述】:
我试图找到一些关于 C 函数理论的官方确认。在我的一个简单项目中,我有一个函数,我只想在定义它的.c 文件中可见。函数原型为:
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 的答案。
谢谢。
【问题讨论】:
-
我认为 C++ 只是从 C 继承了这个特性。
-
我不明白您为什么会收到错误或警告。您的原型和函数是否定义在不同的文件中?
-
@mbratch 他认为原型和定义在使用
static修饰符时需要保持一致。 -
@JoachimPileborg 我将它们都设为静态,并且在上述情况下,在它们都被定义为静态的情况下,没有遇到错误并且导致相同的行为。如果它们都没有被定义为静态,我期待一个错误。
标签: c gcc function-prototypes