在代码文件上定义一个函数,但不在 header 上声明它是一种好习惯吗?
Is it good practice to define a function on a code file, but not declare it on the header?
我想要做的是在我的 .c 文件中有一个辅助函数,它只会在文件中的另一个函数中使用,并且在特定情况之外没有用处。因此,界面包含它并没有多大用处,但我只是想知道这是否可能 and/or 一个好的做法,以及是否有更优雅的替代方案。
通过不在头文件中声明函数,您只是省略了有关函数的信息,而不是函数的可见性。
声明它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
,链接器将报告错误。
我想要做的是在我的 .c 文件中有一个辅助函数,它只会在文件中的另一个函数中使用,并且在特定情况之外没有用处。因此,界面包含它并没有多大用处,但我只是想知道这是否可能 and/or 一个好的做法,以及是否有更优雅的替代方案。
通过不在头文件中声明函数,您只是省略了有关函数的信息,而不是函数的可见性。
声明它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
,链接器将报告错误。