c语言查看错误步骤命令,程序猿之--C语言细节15(预处理命令细节#error、运算符#和##、__FILE__、__LINE__)...

主要内容:预处理命令细节#error、运算符#和##、__FILE__、__LINE__

一、#error

#error用来表示一个严重错误,大多数编译器会立即停止编译

二、运算符#和##

##:表示将两个记号连接

#:#运算符将一个宏的参数转换为字符串字面量

#define PRINT_INT(x) printf(#x " = %d\n", x) /* 效果为PRINT_INT(i/j)==>printf("i/j" " = %d\n", i/j)==>输出i/j = 5*/

#单独占一行,是所谓的空指令,没有任何作用,一些程序猿用来给条件编译模块之间的间隔

三、__FILE__ 、__LINE__

__FILE__表示当前文件,__LINE__表示当前行,调试时用很好,特别是在嵌入式linux驱动

还有__DATE__日期,__TIME__时间

__STDC__查看编译器是否结果标准C,接受则返回1

四、一些细节

a、宏定义中如果带有参数则需要加圆括号

b、#line指令用来改变给程序的行编号方式,通常编号是1,2,3,....

#include   /* 包含这个头文件,并不是将其所有函数都链接进程序*/

/* ##运算符 */

#define MK_ID(n)  i##n    /* 表示将两个记号连接 */

intMK_ID(1), MK_ID(2),MK_ID(3);/* 预处理后变成int i1,i2,i3;*/

/* 定义多个type##_max函数,函数返回类型和参数类型用define决定

* 如GENERIC_MAX(int)则成了int int_max(int x, int y){return}return x > y ? x : y;

*/

#define GENERIC_MAX(type) \

type type##_max(type x, type y) \

{                               \

returnx > y ? x : y;        \

}

/* 宏定义中如果带有参数则需要加圆括号,如下: */

#define THREE_PI (3*3.1415)

#define TEST(x) ((x)*10)

/* #error用法,error表示一个严重错误,大多数编译器会立即停止编译*/

#if INT_MAX > 100000

#error int type is too small

#endif

/* #line指令用来改变给程序的行编号方式,通常编号是1,2,3,....*/

/* #运算符将一个宏的参数转换为字符串字面量*/

#define PRINT_INT(x) printf(#x " = %d\n", x)  /* 效果为PRINT_INT(i/j)==>printf("i/j" " = %d\n", i/j)==>输出i/j = 5*/

/* #单独占一行,是所谓的空指令,没有任何作用,一些程序猿用来给条件编译模块之间的间隔*/

#if INT_MAX > 1000

#

#error int

#

#endif

/* 条件编译*/

#define DEBUG   /* 不需要给DEBUG一个值*/

#if defined(DEBUG)

#endif

intmain(intargc,char* argv[])

{

inti =10, j =2;

PRINT_INT(i/j);

printf("Compiled on %s at %d \n",__FILE__,__LINE__);/* __FILE__表示当前文件,__LINE__表示当前行,调试时用很好,特别是在嵌入式linux驱动 */

printf("%s || %s \n",__DATE__,__TIME__);/* 还有__DATE__日期,__TIME__时间*/

printf("%d\n",__STDC__);/* __STDC__查看编译器是否结果标准C,接受则返回1*/

return0;

}

输出:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值