define把参数变成字符串1 #define f(x) printf("%s",#x);
define连接两个字符串1 #define a(x) a##x
define把参数变成字符1 #define N(x) #@x
取消#define的作用域1 #undef MN //取消define的作用域
define内联函数1 #define run() {puts("锄禾日当午1") ;2 puts("锄禾日当午2");3 puts("锄禾日当午3");}
define定义assert
- assert用法
1 assert(a = 0);
- 宏定义assert
1 #define ASSERT(x) 2 if((x))3 { 4 printf("ASSERT %s 代码出错\n",#x) ; 5 printf("文件%s %d行\n",__FILE__,__LINE__) ; 6 printf("函数%s \n",__FUNCTION__) ; 7 abort(), getchar();8 return ; 9 }
- #ifdef,#error用法
1 #ifdef N 2 #error 错误,不能定义N 3 #endif
#if用法1 #if num==1 2 #error 小伙子你的除数不要写为0,写了哥会溢出的 3 #endif
- 内置宏定义__LINE__,__FILE__
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #line 1 5 void main() //计数,从这一行开始 6 { 7 //改变行数,某一段到某一段一共多少行 8 printf("%d\n", __LINE__); 9 char path[100]; 10 //获取当前文件地址 11 sprintf(path, "%s", __FILE__); 12 printf("%s", path); 13 getchar(); 14 }