【C++学习】C/C++如何编译简单编译多文件

如何简单编译多文件

目标问题

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

问题分析

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

解决方法

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值