库的 C 内部 header 约定

C internal header conventions for libraries

是否有分隔 public 接口 header 和内部 header 的约定?我查看了一些库,发现大部分内部 header 位于名为 something-internal.hsrc 目录中,而 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