c - C 中静态函数的声明和定义都需要 static 关键字吗?

标签 c static

在 C 语言中,在实现文件中,当在同一个文件中前向声明静态函数时,声明(原型(prototype))和函数定义中都需要 static 关键字吗?

最佳答案

如果您包括 static在原型(prototype)(前向声明)中,您可以在实际定义中省略该关键字(然后隐含)。但是,如果您没有 static在原型(prototype)中但确实将其包含在定义中,那么您就处于非标准 C 的领域。
例如,以下代码是非标准的:

#include <stdio.h>

void foo(void); // This declares a non-static function.

int main()
{
    foo();
    return 0;
}

static void foo(void)
{
    printf("Foo!\n");
}
clang-cl 编译器对此发出警告:

warning : redeclaring non-static 'foo' as static is a Microsoft extension [-Wmicrosoft-redeclare-static]

关于c - C 中静态函数的声明和定义都需要 static 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67574432/

相关文章:

c - Linux在父进程和子进程之间使用管道在c中传递值?

c++ - 别名规则是对称的吗?

c - 静态变量有什么错误吗?

c# - 使用这个静态类的潜在问题是什么

c++ - 如何在不同的 dll 中强制销毁静态对象的顺序?

c - C中的void函数指针返回值

c - c 中是否有一个函数可以返回一个字符串在另一个字符串中的索引?

java - final关键字可以单独用于在java中定义常量吗

c++ - 如何在 C++ 中初始化静态 const 成员?

c - 从C中的数组中删除一个条目