正如评论中所阐明的,问题是关于普通的c函数,而不是c++方法。 static
static
我明白什么是static变量,但什么是static函数?
为什么如果我声明一个函数,比方说void print_matrix,比方说a.c(WITHOUT a.h) 并包含"a.c"- 我得到"print_matrix@@....) already defined in a.obj"了,但是如果我声明它,static void print_matrix那么它会编译?
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中。只是一个临时的、快速的解决方案。
.c
main.c
.h
static函数是仅对同一文件中的其他函数可见的函数(更准确地说 是同一 翻译单元)。
编辑 :对于那些认为问题的作者意味着“类方法”的人:由于问题被标记C,他的意思是一个普通的旧 C 函数。对于 (C++/Java/…) 类方法,static意味着可以在类本身上调用此方法,不需要该类的实例。
C