C语言头文件中定义的变量,C语言在头文件中定义const变量详解

本文详细介绍了C语言在头文件中定义const变量的情况,指出这样可能导致预编译时每个包含该头文件的源文件都会为其分配空间,从而造成ROM的浪费。同时,文章提及了gcc编译器对未声明函数原型的处理规则,并讨论了头文件的作用和正确使用方法。
摘要由CSDN通过智能技术生成

C语言在头文件中定义const变量详解

C语言在头文件中定义const变量详解

在头文件中定义const不会有多变量的警告或错误,如果该头文件被大量包含会造成rom空间的浪费。

通过查看*.i文件的展开呢,可以发现每个.i文件都会有相应的变量展开。

查看*.map文件,能查看到该变量的多个地址分配。

在预编译的时候如果在头文件定义了const变量,每一个包含该头文件的c文件都会将其展开,而在编译的时候不会报错,因为这符合语法规则,每一个包含这个头文件的*.c文件都会编译一次这个变量,分配一个新的地址,然后在链接的时候也不会报错,因为每个同名变量都有自己的地址空间,虽然程序运行不会带来问题,但是如果变量多了,会造成rom的大量浪费

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-05-11

使用gcc的编译器 头文件没有包含stdlib.h,使用atoi函数(atoi函数在stdlib.h中才有声明),编译却没有出错 如果编译的时候加上-Wall选项,会有个警告,请问这是为什么?这是因为C语言一个非常傻的规定:一个函数如果没有声明函数原型,其返回值类型就是int(所谓的implicit declaration).由于atoi恰好真返回int,所以你即使不包含它的头文件也不报错.至于这个警告,是为了避免你由于忘记声明函数原型而出错. 编译器对于没有定义过的函数原型直接当作它返回int

头文件是扩展名为.h的文件,其中包含C函数的声明和宏定义,也可以多个源文件之间共享.有两种类型的头文件:程序员编写的文件,和编译器中附带的文件. 要求使用头文件的程序,包括通过它,使用C语言预处理指令#include就像所看到的包含stdio.h头文件,它随着编译器自带. 包括一个头文件等于复制头文件的内容

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值