gpt4 book ai didi

C函数: static or remove from header

转载 作者:行者123 更新时间:2023-11-30 15:21:47 29 4
gpt4 key购买 nike

[Ansi-C/Eclipse]由于某种原因,我没有发现任何有用的东西,所以这是我的问题:

我希望 bar() 只能被 foobar.c 内的代码访问

我应该:

  • 将 static 放在声明和定义前面

  • foobar.h中删除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函数,因此您不需要头文件中的原型(prototype)。如果需要,您可以在 foobar.c 本身内部放置一个前向声明。

关于C函数: static or remove from header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491246/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com