[ANSI-C /的Eclipse] 出于某种原因,我没有找到任何有用的信息,所以这是我的问题:
我希望只有bar()
foobar.c
我应该:
将静态放在声明和定义
从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");
}
答案 0 :(得分:1)
是的,你是对的。你应该做到这两点。
使函数static
仅将该函数的可见性限制为翻译单元(文件)。无法从任何其他源文件中的任何其他函数调用该函数。
您无需从其他翻译单元调用static
函数,因此您不需要头文件中的原型。如果需要,您可以在foobar.c
内部放置一个前瞻性声明。