gpt4 book ai didi

c - C 中的静态函数

转载 作者:太空狗 更新时间:2023-10-29 15:49:02 25 4
gpt4 key购买 nike

我有一个由 *.h 文件和 *.c 文件组成的软件模块。变量和函数声明位于 *.h 文件中,而函数定义位于 *.c 文件中。模块中的两个函数是辅助函数,不打算在模块外部使用。

向模块用户明确说明此意图的最佳方法是什么?

我尝试声明函数 static,但在 *.h 文件中这样做会导致 GCC 编译器警告函数“声明为静态但从未定义”。为什么 *.h 和 *.c 文件被视为不同的翻译单元,即使 *.c 文件使用 #include 指令来包含 *.h 文件?

是否有解决此问题的方法,不涉及将要成为static 的函数的声明连同它们的定义放在*.c 文件中?虽然此解决方案确实有效,但它打破了我认为将声明保留在头文件中并将定义保留在实现文件中的良好做法。

最佳答案

How is it that the *.h and *.c files are treated as different translation units, even though the *.c file uses the #include directive to include the *.h file?

header 通常也包含在其他源文件中。这就是警告的原因。

如果你编译其他文件包括头文件,你确实有一个未定义的声明函数。

好的做法是在定义它们的源文件中声明静态函数,因为这是它们在其中可见的唯一文件。

关于c - C 中的静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14149814/

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