重复定义的问题

前段时间调试一个程序的时候总是提示某个变量重复定义,通过查阅相关的资料,问题终于解决

 

1. 在头文件中不应该定义有初始化值的全局变量和只读在RO中的变量,否则容易出现重复定义的问题

  比如:

       头文件hello。h中   有char string[1024];  //不初始化在bss中

      在文件main.c中

              #include "hello.h"

                     int main()

                         {}

    在文件hello.c中

      #include "hello.h"

 

 

这样编译会出现重复定义的错误,因为连接时hello.c和main.c都含有hellO.H文件,这样在内存中会有两份相同的string拷贝,肯定会报重复定义的错误。

 

2.如果将上面的char string[1024];改成static  char string[1024];由于static申明只在本文件有效。连接能够通过,但是在两个目标文件中都记录了一个未初始化的数据,运行时将分配连个1024的空间,造成了资源的浪费,所以在头文件中不要定义静态变量。

 

3.在头文件中对函数只做申明,对变量用extern声明,在.c函数中定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值