#error和#line使用分析

本文介绍了C语言中预处理器指令#error和#warning的用法,它们允许在编译时自定义错误和警告信息。特别地,当PRODUCT未定义时,通过添加#error指示可以触发编译错误。同时,讲解了#line指令的作用,用于强制指定新的行号和文件名,便于调试。在现代软件开发中,尽管#line用得较少,但它在过去的协同开发中起到了定位代码归属的作用。
摘要由CSDN通过智能技术生成

#error

#error用于生成一个编译错误的消息
用法:

#error message  //message 不需要用双引号包围  

实际工程中#error用法

#include<stdio.h>
void f()
{
	#if(PRODUCT == 1)
		printf("low level product");
	#elif(PRODUCT==2)
		printf("middle level product");
	#elif(PRODUCT==3)
		printf("hign level product");
	#endif
}
int main()
{
	f();
	printf("1.Query Information.\n");
	printf("2.Record Information.\n");
	printf("3.Delete Information.\n");

	#if(PRODUCT==1)
		printf("4.Exit.\n");
	#elif(PRODUCT==2)
		prntf("4.High Level Query.\n");
		prntf("5.Exit.\n");
	#elif(PRODUCT==3)
		prntf("4.High Level Query.\n");
		prntf("5.Mannul Service.\n");
		printf("6.Exit.\n");
	#endif
	
	return 0;
}

gcc编译器中给出PRODUCT不同的值:

gcc -DPRODUCT=3 test.c

输出PRODUCT=3时的值
没有定义PRODUCT时:

gcc test.c
./a.out

输出后没有报错,输出1 2 3中的内容

使用#error
在#elif后加上:

#else 
	#error The "PRODUCT is NOT defined!"

这样,当没有定义PRODUCT时,会报错

#line

#line用于强制指定新的行号和编译文件名,并对源程序的代码重新编号
用法:

#line number filename
#line 编译指示字的本质是重定义__LINE__和__FILE__
#include<stdio.h>
int main()
{
	printf("%s:%d\n",__FILE__,__LINE__);
	#line 1 "Song"
	printf("%s:%d\n",__FILE__,__LINE__);
	return 0;
}

输出结果:

test.c:4
Song:1

起初的文件名为test.c,行号为4
#line后将文件名改为Song,在#line下一行开始为第一行

在以前的多人协作开发时要用到#line
谁写的程序就在前面用#line 加上文件名 这样后面编译出错时就可以知道是谁的代码出问题了

小结

#error用于自定义一条编译错误信息
#warning用于自定义一条编译警告信息
#error和#warning常用于条件编译的情形
#line用于强制指定新的行号与文件名,但当今软件开发过程已经不用了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值