gpt4 book ai didi

c++ - C/C++ : Static function in header file, 是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:06 25 4
gpt4 key购买 nike

我知道在源文件中声明静态函数意味着什么。我正在阅读一些代码,发现头文件中的静态函数可以在其他文件中调用。

最佳答案

函数是否定义在头文件中?这样实际的代码直接在函数中给出,像这样:

static int addTwo(int x)
{
return x + 2;
}

那么这只是为许多不同的 C 文件提供有用功能的一种方式。每个包含头文件的 C 文件都将获得自己的可以调用的定义。这当然会浪费内存,而且(在我看来)这是一件非常丑陋的事情,因为在 header 中包含可执行代码通常不是一个好主意。

请记住,#include:ing header 基本上只是将 header 的内容(以及它包含的任何其他 header )粘贴到编译器看到的 C 文件中。编译器永远不知道一个特定的函数定义来自头文件。

更新:在很多情况下,做上面那样的事情实际上是个好主意,我意识到我的回答听起来很非黑即白,这有点过于简单化了.例如,建模(或仅使用)intrinsic functions 的代码可以像上面那样表达,并且带有显式的 inline 关键字甚至:

static inline int addTwo(int *x)
{
__add_two_superquickly(x);
}

这里,__add_two_superquickly() 函数是一个虚构的内在函数,因为我们希望整个函数基本上编译成一条指令,所以我们真的希望它是内联的。不过,上面的方法比使用宏更干净。

与直接使用内在函数相比的优势当然是将其包装在另一层抽象中,从而可以在缺少该特定内在函数的编译器上构建代码,方法是提供替代实现并根据编译器选择正确的实现正在使用中。

关于c++ - C/C++ : Static function in header file, 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6746917/

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