程序猿之--C语言细节15(预处理命令细节#error、运算符#和##、__FILE__、__LINE__)
来源:互联网 发布:淘宝上哪家大码女装好 编辑:程序博客网 时间:2024/06/05 12:28
主要内容:预处理命令细节#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 <stdio.h> /* 包含这个头文件,并不是将其所有函数都链接进程序*/ /* ##运算符 */ #define MK_ID(n) i##n /* 表示将两个记号连接 */ int MK_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) \ {\ return x > 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) #endifint main(int argc, char* argv[]){int i = 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*/ return 0;}
输出:
0 0
- 程序猿之--C语言细节15(预处理命令细节#error、运算符#和##、__FILE__、__LINE__)
- 程序猿之--C语言细节15(预处理命令细节#error、运算符#和##、__FILE__、__LINE__)
- C语言预处理#运算符的细节
- 程序猿之--C语言细节3(i++、 交换两个值得另一种方法、三目运算符处理细节)
- 程序猿之---C语言细节21(#define和typedef区别、结构体细节)
- 程序猿之---C语言细节31(#define和#undef宏细节、#error、#pragma message("文本信息")、宏定义注释)
- 程序猿之---C语言细节11(数组下标越界后测试、数组下标中“ ,”运算符,副作用)
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和#line
- c语言的__FILE__、__LINE__和#line
- C语言中的__FILE__、__LINE__和__func__
- 详解(安卓) 4.0 UI设计规范
- hdu 5101 Select(树状数组)
- [HDU]5094Maze(状态压缩BFS)
- STM32控制直流电机笔记(二)——编程注意事项
- hdu 5101 select
- 程序猿之--C语言细节15(预处理命令细节#error、运算符#和##、__FILE__、__LINE__)
- tmux常用快捷键
- 多线程之同步Synchronized
- Win8.1 图标错乱解决方法
- 【笔记】机器学习基石(一) the learning problem
- hadoop中的文件接口类-- SequenceFile
- OC第七天
- 规范化(标准化)数据的3种方法
- hdu 3065 病毒侵袭持续中(AC自动机)