C/C++知识点之C语言#define关键字,条件编译及预定义符号知识详解
小标 2018-08-27 来源 : 阅读 1945 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言#define关键字,条件编译及预定义符号知识详解,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言#define关键字,条件编译及预定义符号知识详解,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

一.预定义符号

C标准定义了如下五个预处理符号


在文件输入输出以及输出日志等场合下我们会用到这些预处理符号,比如


\+回车 : 续行符,转义字符,后面不能加任何除回车之外的字符,否则会报错

二.#define关键字

#define有两个作用,一个是定义标识符,第二个是定义宏

1.定义标识符


不要在define定义的标识符里加分号

2.定义宏

#define机制包括一个规定,允许把参数替换到文本中,这种实现通常叫做宏或定义宏


宏定义永远不要吝啬括号,防止因为优先级的问题导致出现不可思议的后果 宏不能实现递归 宏只文本替换,并不简化计算 字符串中的内容不会发生宏替换


3.#和 ##

编译器会自动就两个相邻字符串自动连接成一个

#:把参数插入到字符串中

#a -> “a”


##可以把位于它两边的符号拼成一个符号


4.宏和函数对比

①宏没有类型检查

没有类型检查是宏的一大特点(但同时也是不安全的隐患),可以完成很多函数不可能做到的功能


②宏没有函数的调用和返回等额外开销,效率更高,

但是当逻辑复杂并且代码量巨大时,调用和返回的开销和运算的时间相比微乎其微,可以省略

③宏单纯只是文本替换,不能进行调试,很致命

④宏可能会使代码长度增长

⑤函数的参数如果是一个表达式,会计算出表达式的结果传入参数

宏的参数如果是一个表达式,只会文本替换,不会进行计算

总结:各有千秋,小代码量使用宏,大代码量使用函数,C++中摈弃宏这一概念,使用内联,基于优缺点,最好不要使用宏.小编推荐一个学C语言/C++的学习裙【 六二七,零一二,四六四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!




5.带有副作用的宏参数


不要给宏参数传入带有副作用的参数

6.命名约定

宏:全部大写

函数: 不全部大写

例外


#undef name //取消宏标识符name的定义

三.条件编译

1.如果定义了DEBUG,语句执行,反之,不执行


2.条件编译


3.多分支条件编译


3.判断是否被定义


4.嵌套指令

预处理指令可以进行嵌套


四.其它

1.头文件的包含


2.#error “…”

遇到#error便会产生一个编译错误

3.strcpy();

源字符串必须以’/0’结束,返回目标字符串地址

且这个函数不管目标空间是否放得下返回的目标字符串

4.assert(条件语句)

善用断言,头文件为

5.链式反应

这次函数的返回值可以作为下一个函数的参数,达到链式反应的效果

printf(“%d\n”,strlen(strcpy(p,”hello world!”)));

6.常见错误:

编译型错误

直接看编译器错误提示信息即可 链接型错误

函数名,变量名写错,库文件使用错误(第三方库) 运行时错误
    

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

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

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

我知道了

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

请输入正确的手机号码

请输入正确的验证码

获取验证码

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

提交

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

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

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

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved