C语言头文件包含关系(base)

1) c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/)
https://www.cnblogs.com/zhangfeionline/p/5949122.html

2) extern与头文件(*.h)的区别和联系
https://blog.csdn.net/yuyantai1234/article/details/7245412

//上面 1) 与 2)联系到一起:

a) :这里的int A是个全局变量的定义,所以如果这个头文件被多次引用的话,你的A会被重复定义,显然语法上错了。只不过有了这个#ifndef的条件编译,所以能保证你的头文件只被引用一次,不过也许还是不会出岔子,但若多个c文件包含这个头文件时还是会出错的,因为宏名有效范围仅限于本c源文件,所以在这多个c文件编译时是不会出错的,但在链接时就会报错,说你多处定义了同一个变量.

b):【https://www.cnblogs.com/zhangfeionline/p/5949122.html 】

     (1). 我们使用cc -E 命令来查看t1.c的预编译的结果 : 看到编译器把 t1.h 做了展开,我们看到了 a的定义。

     (2).而在t2.c 的预编译结果里,我们同样看到了a的展开定义,

     结果: 所以到了Link阶段,编译器会看见两个a的定义。原因在于 include guards 只在同一个translation unit(一个c文件和include的文件的编译过程)内起作用,两个编译单元是编译过程是分开的,

 

深入理解extern用法

https://blog.csdn.net/aidem_brown/article/details/80237310


C语言编译过程
https://www.jianshu.com/p/4dfa5dea63b5

细说cc 编译命令
https://blog.csdn.net/max2008/article/details/2584556?utm_source=blogxgwz7

#ifndef, #define, #endif 作用
https://www.cnblogs.com/challenger-vip/p/3386819.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值