C/C++知识点之C语言的编译预处理
小标 2019-03-14 来源 : 阅读 833 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言的编译预处理,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言的编译预处理,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之C语言的编译预处理

1、C程序的过程


处理流程:


静态链接与动态链接:


链接可以分为静态链接(静态库)与动态链接(共享库):
 静态库是代码的归档,在使用静态库时是采用的复制代码的方式。共享库是可执行文件的组成部分,在使用共享库时是采用的提供代码在共享库的地址给可执行文件的方式。


GCC编译器:区分大小写


    gcc -E :  只做预处理,其它都不做,(.i)
    gcc -S :  检查语法错误等,生成汇编文件(.s)
    gcc -c : 完成汇编,不链接(.o)
    gcc -o :  修改目标文件名
    gcc    :  编译+链接,生成可执行文件,默认是 a.out
    gcc -Wall :  生成所有的警告信息(提示代码质量,少警告)
    Gcc -D宏名: 条件编译,用于版本选项开关


包含头文件的方法:


宏定义与使用分析: 


内置宏:


条件编译使用:
 条件编译使得我们可以按不同的条件编译不同的代码段,因而可以产生不同的目标代码
  #if…#else…#endif被预编译器处理;而if…else语句被编译器处理,必然被编译进目标代码
 实际工程中条件编译主要用于一下两种情况:
  不同的产品线共用一份代码;区分编译产品的调试版和发布版 
#error(#warning)和#line :
 #error用于生成一个编译错误消息,并停止编译
  用法: #error message   (message不需要用双引号包围)
   #error编译指示字用于自定义程序员特有的编译错误消息类似的,#warning用于生成编译警告,但不会停止编译 
 #line用于强制指定新的行号和编译文件名,并对源程序的代码重新编号
  用法:  #line number filename   (filename可省略)
   #line编译指示字的本质是重定义__LINE__和__FILE__
#pragma预处理:
 #pragma GCC dependency 文件名  (已使用版本控制代替)
  把当前文件和指定文件之间建立依赖关系,如果当前文件最后修改时间比指定文件新,就没问题,否则就产生警告
 #pragma GCC poison 标识符或关键字
  把后面的标识符或关键字禁止使用
 #pragma pack(数字)
  针对结构体的对齐补齐


Struct占用内存大小分析:
 第一个成员起始于0偏移处
 每个成员按其类型大小和指定对齐参数n中较小的一个进行对齐
  偏移地址和成员占用大小均需对齐
  结构体成员的对齐参数为其所有成员使用的对齐参数的最大值结构体总长度必须为所有对齐参数的整数倍 


#和##运算符使用:

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程