简单宏技巧

来源:互联网 发布:老子的道是指什么 知乎 编辑:程序博客网 时间:2024/05/12 07:50


在编译文件时, 某些宏技巧能帮上我们的忙

1)  替换函数名

#warning adfa#include <stdio.h>#define fun1 fun2void fun1() {      printf("1\n");}void main() {   fun2();}


2) 让编译在某个点停下

#error


3)  监控条件编译的走向

void main() {int i;#ifdef M1#warning M1i=1;#else#warning M2i=2;#endif}


4) 灵活条件编译

$ gcc a.c
a.c:13:2: warning: #warning M2

用 -D 定义 M1

$ gcc a.c -DM1
a.c:7:2: warning: #warning M1


5)  如果直接用  #if  会如何

void main() {int i;#if M1#warning M1i=1;#else#warning M2i=2;#endif}

$ gcc a.c -DM1
a.c:6:2: warning: #warning M1


$ gcc a.c -DM1=0
a.c:9:2: warning: #warning M2

我们姑且可以理解 -DM1  等价于 #define M1 1

而在文件头部写 #define M1 a, 输出将是

a.c:9:2: warning: #warning M2

原创粉丝点击