库的 C 内部 header 约定
C internal header conventions for libraries
是否有分隔 public 接口 header 和内部 header 的约定?我查看了一些库,发现大部分内部 header 位于名为 something-internal.h
的 src
目录中,而 public header 位于include
目录。我在想这样的事情:
(xyz
是库名)
include/xyz/something.h
(public接口)
struct something;
void do_something(struct something *s);
src/something.h
(内部 header)
/* include public header */
#include "xyz/something.h"
/* struct definition in internal header for opaque struct */
struct something { int x, int y };
src/something.c
/* not xyz/something.h, but the private header in src/ */
#include "something.h"
void do_something(struct something *s) {
/* function definition */
}
所以请注意,我没有使用 -internal
后缀,因为在我看来,如果 header 在 src
目录中,它就是内部目录。这对于新贡献者来说是否足够清楚?还是应该为清楚起见添加 -internal
后缀?
`
我认为你的建议非常好。 linux 内核使用与 include/ 下的 public sched.h
和 kernel/sched 下的私有 sched.h
相似的布局 – Frederik Deweerdt
是否有分隔 public 接口 header 和内部 header 的约定?我查看了一些库,发现大部分内部 header 位于名为 something-internal.h
的 src
目录中,而 public header 位于include
目录。我在想这样的事情:
(xyz
是库名)
include/xyz/something.h
(public接口)
struct something;
void do_something(struct something *s);
src/something.h
(内部 header)
/* include public header */
#include "xyz/something.h"
/* struct definition in internal header for opaque struct */
struct something { int x, int y };
src/something.c
/* not xyz/something.h, but the private header in src/ */
#include "something.h"
void do_something(struct something *s) {
/* function definition */
}
所以请注意,我没有使用 -internal
后缀,因为在我看来,如果 header 在 src
目录中,它就是内部目录。这对于新贡献者来说是否足够清楚?还是应该为清楚起见添加 -internal
后缀?
`
我认为你的建议非常好。 linux 内核使用与 include/ 下的 public sched.h
和 kernel/sched 下的私有 sched.h
相似的布局 – Frederik Deweerdt