1

在 C 中,是否经常以复制/粘贴方式.c包含其他内部文件和静态变量/函数的文件?.c就像一个.c由许多文件组成的文件一样.c,您希望所有内容都保持私有而不在头文件中声明。

例子:

交流

static int a() {
    return 3;
}

公元前

static int b() {
    return 6;
}

ch

int c();

抄送

#include "c.h"

#include "a.c"
#include "b.c"

int c() {
    return a() + b();
}

主程序

#include <stdio.h>

#include "c.h"

int main() {
    printf("%d\n", c())
}

编译

clang -c c.c
clang -c main.c
clang c.o main.o -o test.exe
4

2 回答 2

0

不,这并不常见。标准方法是创建新的头文件a.cb.c包含这些头文件而不是.c源文件,否则就像您所做的那样。然后,您分别编译所有源并将它们链接在一起,在您的情况下:

clang -c a.c
clang -c b.c
clang -c c.c
clang -c main.c
clang a.o b.o c.o main.o -o test.exe
于 2021-02-23T15:15:38.983 回答
0

如果您将 ac 重命名为 ah,bc 重命名为 bh,那么一切看起来都很正常。

#include 是编译器的预处理;它只是在那里插入目标文件的内容。无论是 .h 或 .c 还是其他东西。

但按照惯例,包含实现文件并不好。这将破坏源代码结构。

于 2021-02-23T16:04:04.973 回答