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

pic*_*c11 10 c c++

我遇到了别人写的一段代码.在头文件中声明为静态的几个全局函数.函数本身在单独的实现文件中定义.AFAIK,静态函数定义在定义函数的转换单元外部不可见.如果是这样,在头文件中声明静态函数有什么意义?

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


// in some implementation file
static void foo()
{
....
....
}
Run Code Online (Sandbox Code Playgroud)

App*_*ker 6

好吧,声明static的函数只能在它们定义的源文件中可见.虽然在单独的头文件中声明它们并不是一个好主意.我也看过一些开发人员已经做过这种情况的案例.他们这样做是为了按顺序排列它们,以便他们可以从另一个函数调用一个函数.这就是我的意思:

/* 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 */ }
Run Code Online (Sandbox Code Playgroud)

但恕我直言,这是一个非常灾难性的方法.更好的解决方案是static在实现源文件之前对其进行原型设计.