预编译时宏替换 见解
Posted lc-bk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预编译时宏替换 见解相关的知识,希望对你有一定的参考价值。
在预编译的过程中 主要处理# 和宏替换
例如
#include<stdio.h> #define PI 3.14 int main() double r=3, s; s=r*r*PI; printf("%f\\n",s); return 0;
在预编译的时候 代码变成如下
#include<stdio.h> int main() double r=3, s; s=r*r*3.14; printf("%f\\n",s); return 0;
#define PI 3.14 不开辟空间 不要求类型 只将源码中所有的PI 替换成3.14
#include<stdio.h> #define int int* int main() int p; return 0;
上面这段代码在预编译的时候将所有int 替换为int * 主函数返回类型为指针型 p为指针变量
宏定义带参时
#include<stdio.h> #define SUM(x,y)(x*y) int main() int a=3,b=4; int c=SUM(a+5,b+6); //预编译时替换为 int c=SUM(a+5*b+6) printf("%d\\n",c); return 0;
输出 c=29
#include<stdio.h> #define MAX (x,y)((x)>(y)?(x):(Y)) int main() int a=10,b=5; MAX(++a,b); printf("%d",a): return 0;
输出 a=12;
以上是关于预编译时宏替换 见解的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 正则表达式简单字符串搜索/替换转义方法(使用RE速度增强 - 预编译)