C 函数:静态或从 header 中删除

C Functions: static or remove from header

[Ansi-C/Eclipse] 出于某种原因,我没有找到任何有用的信息,所以这是我的问题:

我希望 bar() 只能由 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 本身内放置前向声明。