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头文件,它随着编译器自带. 包括一个头文件等于复制头文件的内容