C 函数:静态或从 header 中删除
C Functions: static or remove from header
[Ansi-C/Eclipse]
出于某种原因,我没有找到任何有用的信息,所以这是我的问题:
我希望 bar()
只能由 foobar.c
中的代码访问
我应该:
在声明和定义前加上static
将bar()
的声明从foobar.h
中去掉,放到foobar.c
?
中
有什么区别?这是我的设置:
main.c:
#include "foobar.h"
int main() {
foo();
}
foobar.h:
#ifndef FOOBAR
#define FOOBAR
void foo();
void bar(); //Move to foobar.c?
#endif
foobar.c:
#include "foobar.h"
void foo() {
bar();
}
void bar() { //make this static?
printf("Hello World");
}
是的,你完全正确。你应该两者都做。
创建函数 static
限制该函数仅对翻译单元(文件)可见。不能从任何其他 源文件 .
中存在的任何其他函数调用该函数
您不需要从其他翻译单元调用 static
函数,因此您不需要头文件中的原型。如果需要,您可以在 foobar.c
本身内放置前向声明。
[Ansi-C/Eclipse] 出于某种原因,我没有找到任何有用的信息,所以这是我的问题:
我希望 bar()
只能由 foobar.c
我应该:
在声明和定义前加上static
将
bar()
的声明从foobar.h
中去掉,放到foobar.c
? 中
有什么区别?这是我的设置:
main.c:
#include "foobar.h"
int main() {
foo();
}
foobar.h:
#ifndef FOOBAR
#define FOOBAR
void foo();
void bar(); //Move to foobar.c?
#endif
foobar.c:
#include "foobar.h"
void foo() {
bar();
}
void bar() { //make this static?
printf("Hello World");
}
是的,你完全正确。你应该两者都做。
创建函数
static
限制该函数仅对翻译单元(文件)可见。不能从任何其他 源文件 . 中存在的任何其他函数调用该函数
您不需要从其他翻译单元调用
static
函数,因此您不需要头文件中的原型。如果需要,您可以在foobar.c
本身内放置前向声明。