C功能:静态或从标题中删除

时间:2015-04-07 12:09:35

标签: c function static header

[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");
}

1 个答案:

答案 0 :(得分:1)

是的,你是对的。你应该做到这两点。

  • 使函数static仅将该函数的可见性限制为翻译单元(文件)。无法从任何其他源文件中的任何其他函数调用该函数。

  • 您无需从其他翻译单元调用static函数,因此您不需要头文件中的原型。如果需要,您可以在foobar.c内部放置一个前瞻性声明。