Summary
1)#error
用于生成一个编译错误
信息;#warning
用于生成一个编译警告
信息;
2)编译过程中的任何错误信息意味着无法生成最终的可执行程序
3)语法:#error/#warning message
,message不需要用双引号包围
4)#line
用于指定后续代码的起始行号和文件名
5)语法:#line line filename
filename可胜率,是个字符串(双引号)
·#error和#line分析
1、#error和#warning
#error
用于生成一个编译错误
信息;#warning
用于生成一个编译警告
信息;
#error
是一种预编译器指示字
,可用于提示编译条件是否满足
。
注意:编译过程中的任何错误信息意味着无法生成最终的可执行程序
语法:#error message
,message不需要用双引号包围
#ifndef __cplusplus
#error This file should be processed with C++ compiler.
#endif使用gcc编译器编译:gcc test.c
输出:test.c 4: error: #error This file should be processed with C++ compiler.
不会生成可执行程序使用g++编译器编译:g++ test.c
可以生成可执行程序分析:__cplusplus是C++编译器里特有的宏,
使用gcc时,无法识别这个宏,
因此输出了一条错误信息,并且由于存在错误信息,可执行程序无法生成;
使用g++时,就会跳过该段预处理。
#ifndef __cplusplus
#warning This file should be processed with C++ compiler.
#endif使用gcc编译器编译:gcc test.c
输出:test.c 4: warning: #warning This file should be processed with C++ compiler.
虽然提示了警告,但是会生成可执行程序
2、#line
#line
用于强制指定新的行号和编译文件名,并对源程序的代码重新编号;本质重定义__LINE__和__FILE__。用法
:#line number filename (filename可省略)#line 1 "delphi.c" : 指定当前声明处的下一行为第1行,指定当前文件名为"delphi.c"
【【C进阶】#error和#line使用分析】
背景
:最开始大家都把代码写在一个文件里,比如3个开发同时完成了一个.c文件,这时候出错了就不好定位是谁写的代码出问题了。所以就用#line这个预处理指示字,来指明每一段代码的行号和文件名。下次出问题报错,就知道是谁的代码写错了。本文总结自“狄泰软件学院”唐佐林老师《C语言进阶课程》。
如有错漏之处,恳请指正。
推荐阅读
- c/c++|有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代...
- C/C++|C/C++ basis 02
- Qt实战|Qt+OpenCV联合开发(二十一)--图像翻转与旋转
- Qt实战|Qt+OpenCV联合开发(十四)--图像感兴趣区域(ROI)的提取
- Qt实战|Qt+OpenCV联合开发(十三)--通道分离与合并
- opencv|Qt+OpenCV联合开发(十六)--图像几何形状绘制
- Qt实战|Qt+OpenCV联合开发(十七)--随机数与随机颜色
- SNAT的MASQUERADE地址选择与端口选择
- IPTABLES的连接跟踪与NAT分析
- IPVS分析