关于c:C进阶error和line使用分析

2次阅读

共计 1125 个字符,预计需要花费 3 分钟才能阅读完成。

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"

背景:最开始大家都把代码写在一个文件里,比方 3 个开发同时实现了一个.c 文件,这时候出错了就不好定位是谁写的代码出问题了。所以就用 #line 这个预处理批示字,来指明每一段代码的行号和文件名。下次出问题报错,就晓得是谁的代码写错了。

本文总结自“狄泰软件学院”唐佐林老师《C 语言进阶课程》。
如有错漏之处,恳请斧正。

正文完
 0