问题是关于普通 c函数,而不是 c++ static
方法,如评论中所述。
我明白什么是static
变量,但什么是static
函数?
为什么如果我声明一个函数,让我们说void print_matrix
,让我们说a.c
(没有a.h
)并包含"a.c"
- 我得到 "print_matrix@@....) already defined in a.obj"
,但是如果我将它声明为 static void print_matrix
然后编译?
更新 只是为了澄清问题 - 我知道包含 .c
是不好的,正如你们中的许多人指出的那样。我这样做只是为了暂时清理 main.c
中的空间,直到我更好地了解如何将所有这些函数分组到适当的 .h
和 .c
文件。只是一个临时的、快速的解决方案。
最佳答案
static
函数是仅对同一文件中的其他函数可见的函数(更准确地说,相同的 translation unit )。
编辑:对于那些认为问题的作者意味着“类方法”的人:由于问题被标记为 C
他意味着一个普通的旧 C 函数.对于 (C++/Java/...) 类方法,static
意味着可以在类本身上调用此方法,不需要该类的实例。
关于c - 什么是 C 中的 "static"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/558122/