如果我像这样构建我的 C 程序,随着项目的增长,编译时间是否会减少?
#include <stdio.h>
#include "lib/manager/manager.h"
#include "lib/loop/loop.h"
#include "lib/utility/utility.h"
int main()
{
FN fn;
dev_loop_init(&fn);
dev_utility_init(&fn);
fn.util.log("test");
return 0;
}
我将在每个“模块”中包含一个 manager.h 头文件。
#ifndef DEV_MANAGER
#define DEV_MANAGER
typedef struct {
void (*start) (void);
void (*stop) (void);
} Loop;
typedef struct {
void (*log) (char* message);
} Utility;
typedef struct {
Loop loop;
Utility util;
} FN;
#endif
一个示例模块,loop.h。
#include "../manager/manager.h"
#ifndef DEV_LOOP
#define DEV_LOOP
void dev_loop_init(FN *fn);
#endif
loop.c 函数
#include "loop.h"
static void dev_loop_start(){}
static void dev_loop_stop(){}
void dev_loop_init(FN *fn)
{
fn->loop.start = &dev_loop_start;
fn->loop.stop = &dev_loop_stop;
}
编译器非常快,你的 20 行头根本不是问题。当你的项目增长到数百个文件时,通常每个文件都有数千行,你需要使用 make 或 Cmake 之类的构建系统,它们只会编译更改的文件
这些系统还可以运行编译器的多个实例——并行编译代码。