预编译时宏替换 见解

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;

 

以上是关于预编译时宏替换 见解的主要内容,如果未能解决你的问题,请参考以下文章

使用参数预编译文本替换宏

KEIL生成预编译文件

JavaScript 正则表达式简单字符串搜索/替换转义方法(使用RE速度增强 - 预编译)

mybatis输出预编译的sql替换为可直接执行的sql

鸿蒙系统研究之五:替换 AOSP 预编译库,关闭 SELinux

鸿蒙系统研究之五:替换 AOSP 预编译库,关闭 SELinux