(c/c++)如何编译简单编译多文件

如何简单编译多文件

目标问题

本文解决的问题主要是针对linux下多文件编译时出现头文件重复覆盖,以及重复定义的问题。(小白第一次写文章,有问题请各位大佬指正)

问题分析

编译程序编译到一定代码量时,就会需要将一个文件分为多个文件进行编译,每个文件还会对应不同的头文件,这时如果使用多文件编译很可能会出现重复定义的问题。问题主要来源于两个方面,一方面是引用头文件时,因为引用的头文件里还引用其他文件;另一方面是头文件里定义了变量,编译多文件时都引用了该文件时就会出现重复定义该变量的问题。

解决方法

针对第一种情况,我们可以在每个头文件里面添加#ifndef _FILENAME_h以及#define _FILENAME_h,其中FILENAME_h是指头文件名,然后再结尾添加#endif。这样每个头文件就只会被覆盖一次,能解决重复引用头文件的问题。
第二种情况,就需要我们只在头文件里定义函数,不能再头文件里定义变量,否则会重复定义。那如果想定义全局变量怎么办,我们可以在一个c文件里定义变量,而在其他需要使用该变量的c文件头部使用extern定义变量,即是在定义变量添加extern。

猜你喜欢

转载自blog.csdn.net/DexiangPeng/article/details/99537058