The question was about plain functions, not static methods, as clarified in comments.

我知道什么是static变量,但是什么是static函数呢?

为什么如果我声明一个函数,比如说void print_matrix,在a.c(没有a.h)中,包含"a.c"——我得到"print_matrix@@....) already defined in a.obj",但如果我声明它为static void print_matrix,那么它就编译了?

UPDATE个只是为了把事情弄清楚-正如你们许多人指出的那样,我知道包括.c个是不好的.我这样做只是为了暂时清除main.c中的空间,直到我更好地了解如何将所有这些函数分组到正确的.h.c文件中.只是一个临时的、快速的解决方案.

推荐答案

static函数是仅对同一文件中的其他函数(更准确地说是the same 100)可见的函数.

EDIT:对于那些认为问题的作者是指"类方法"的人来说:因为问题被标记为C,所以他指的是一个普通的老式C函数.用于(C++/Java/.)类方法,static表示可以在类本身上调用此方法,不需要该类的实例.

C++相关问答推荐

有效地计算由一组点构成的等边三角形和等腰三角形的数量

如何在C宏中确定Windows主目录?

为什么删除CAP_DAC_OVERRIDE后创建文件失败?

为什么我一直收到分段错误?

如何在C中使printf不刷新标准输出?

在C++中访问双指针

C指针概念分段故障

GCC错误,共享内存未定义引用?

从不兼容的指针类型返回&&警告,但我看不出原因

如何在zOS上编译共享C库

为什么我无法访问C语言中的文件

Matlab/Octave对conv2函数使用哪种方法?

`%%的sscanf无法按预期工作

未为同一文件中的函数执行DirectFunctionCall

为什么argc和argv即使在主函数之外也能工作?

在C中交换字符串和数组的通用交换函数

如何用用户输入的多个字符串填充数组?

Makefile - 将 .o 文件放入子文件夹中

如何转义包含指令中的字符?

在 C23 之前如何对空指针使用nullptr?