【c&c++】C语言#error #line #pragma预处理学习
C语言#error #line #pragma预处理学习
一、#error 的用法
(1)#error 是一种预编译器指示字,用于生成一个编译错误消息
(2)用法:#error message //注意:message 不需要用双引号包围
(3)#error 编译指示字用于自定义程序员特有的编译错误消息。类似的,#warning 用于生成编译警告消息
(4)#error 可用于提示编译条件是否满足。编译过程中的任何错误意味着无法生成最终的可执行程序
(5)测试代码
# include <stdio.h> int main() { #error "there is a error,fail to compile " return 0; }

2. #line 的用法
(1)#line 用于强制指定新的行号和编译文件名,并对源程序的代码重新编号
(2)用法:#line number newFilename //newFilename 可省略
(3)#line 编译指示字的本质是重定义__LINE__和__FILE__
(4)测试代码
#include <stdio.h> //作者 A 写的代码 //--------------------------开始-------------------------- //把 line 的下一行定义为第 1 行,文件名为“a.c” #line 1 "a.c" //--------------------------结束-------------------------- //作者 B 写的代码 //--------------------------开始-------------------------- //把 line 的下一行定义为第 1 行,文件名为“b.c” #line 1 "b.c" //--------------------------结束-------------------------- //作者 C 写的代码 //--------------------------开始-------------------------- #line 1 "MyCode.c" int main(){ printf("%s:%d\n",__FILE__,__LINE__);//输出 MyCode.c:4 #line 1 "Test.c" printf("%s:%d\n",__FILE__,__LINE__);//输出 Test.c:1 return 0; }
(5)测试结果
三、#pragma message——用于自定义编译消息
(1)message 参数在大多数的编译器中都有相似的实现
(2)message 参数在编译时输出消息到编译输出窗口中
(3)message 用于条件编译可提示代码的版本信息
(4)与#error 和#warning 不同,#pragma message 仅仅代表一条编译消息,不代表程序错误
( 5)测试代码
#include <stdio.h> int main(){ #pragma message("Complie Android SDK 8.0...") return 0; }
( 6)测试结果
#include <stdio.h> int main(){ #pragma message( "Compiling " __FILE__ ) #pragma message( "Last modified on " __TIMESTAMP__ ) printf("%s\n","i love android!"); return 0; }
#include <stdio.h> int main(){ #warning the is a warning!! printf("%s\n","i love android!"); return 0; }
(3)测试结果,编译的时候打印warn信息,但不会停止编译。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2020-02-10 【mysql】GPS应用