C/C++ separate compilation

功能文件头文件和实现

头文件

1
2
3
4
5
6
7
// print_string.h
#ifndef PRINT_STRING
#define PRINT_STRING

void print_string(const char *str);

#endif

实现

1
2
3
4
5
6
7
8
// print_string.cpp
#include "print_string.h"
#include <stdio.h>

void print_string(const char *str)
{
printf("%s\n", str);
}

测试文件实现

1
2
3
4
5
6
7
8
9
10
#include "print_string.h"


int main()
{

char str[] = "hello world";
print_string(str);
return 0;
}

编译和链接

执行以下命令

1
2
g++ main.cpp print_string.cpp -o main
./main

理解

main中包含了print_string.h头文件,相当于对函数进行了声明。然后使用g++编译的时候相当于提供了print_string的实现。

关于分离式编译的原理可以查看CSAPP linking