gpt4 book ai didi

c++ - 在头文件中声明静态全局函数

转载 作者:可可西里 更新时间:2023-11-01 16:12:59 27 4
gpt4 key购买 nike

我偶然发现了一段别人写的代码。在头文件中有几个声明为静态的全局函数。函数本身在单独的实现文件中定义。 AFAIK,静态函数定义在定义函数的翻译单元之外不可见。如果是这样,在头文件中声明静态函数有什么意义?

// in some header file
static void foo();


// in some implementation file
static void foo()
{
....
....
}

最佳答案

嗯,声明为 static 的函数仅在定义它们的源文件中可见。尽管在单独的 header 中声明它们并不是一个好主意。我也见过一些开发人员这样做的案例。他们这样做是为了按顺序排列它们,以便他们可以从另一个函数调用一个函数。这就是我的意思:

/* In header */
static void plus(int);
static void minus(int);
static void multiply(int);

/* In source file */
static void minus(int v)
{
/* So plus can be called in minus without having to define it
* before minus */
plus();
}

static void plus(int v) { /* code */ }

但是恕我直言,这是一种相当灾难性的方式。更好的解决方案是在实现它们之前在源文件中对 static 函数进行原型(prototype)设计。

关于c++ - 在头文件中声明静态全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803231/

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