首页 > 解决方案 > 在代码文件上定义函数但不在标题上声明它是一种好习惯吗?

问题描述

我想要做的是在我的 .c 文件中有一个辅助函数,它只能在文件中的另一个函数中使用,并且在特定情况之外没有用处。因此,包含它的界面并没有多大用处,但我只是想知道这是否可能和/或一个好的做法,以及是否有更优雅的替代方案。

标签: cfunctionheader-files

解决方案


通过不在头文件中声明函数,您只是省略了有关函数的信息,而不是函数的可见性。

声明它static(并从头文件中省略)。

// barfoo.h
int bar(void);

//barfoo.c
#include "barfoo.h"
static int foo(void) { return 42; }
int bar(void) { return foo(); }

//main.c
#include "barfoo.h"
int main(void) {
    bar();
}

在这个例子中,如果foo()没有定义它,static它仍然可以从main(). 如果你尝试使用static它,链接器会报错。


推荐阅读