博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言#define拼接宏定义实现
阅读量:6343 次
发布时间:2019-06-22

本文共 853 字,大约阅读时间需要 2 分钟。

hot3.png

 使用场合:拼接两个宏,一个是传入的宏。但是传入的宏不会被替换,反而原封不动的接了上去,这就尴尬了。经过各种尝试,居然成了,特此记录分享一下,方便大家学习。

char A_param=0;

char B_pramm=0;

//添加宏定义

#define OBJECT         A 

#define DEFINE_(X)   X##_param       //一次定义
#define DEFINE(X)     DEFINE_(X) //再次定义
#define PARAM    DEFINE(OBJECT)

void fun()

{

//  DEFINE_(OBJECT)=100;  这个操作是拒绝的,它就是直接拼接不被替换

   DEFINE(OBJECT)=100; //这个操作就神了,先替换再拼接,我们只是做了二次定义,解决一切烦恼

   PARAM=100;//这样也是可以的

}

那最终是不是达到你的目的呢,实质的原理大概就是替换与拼接的先后顺序,我没有细细研究了。

下面是我的一个使用场合。

#define STEP_TIMx  4//TIM4

#define STEP_CHx  2//CH2

#define SET_STEP42_PPS_1(NUM,X)  TIM##NUM->PSC=((X))

#define SET_STEP42_PPS_2(NUM,X)  SET_STEP42_PPS_1(NUM,X)

#define SET_STEP42_PPS(X)     SET_STEP42_PPS_2(STEP_TIMx,X)

//最终目的就是想实现  TIM4->PSC=X ,我的目的达到了

--------------------- 
作者:ai5945fei 
来源:CSDN 
原文:https://blog.csdn.net/ai5945fei/article/details/79119109 
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://my.oschina.net/u/4000302/blog/3021528

你可能感兴趣的文章
思科设备VLAN之间通信配置
查看>>
mysql排错 (一)
查看>>
给一系列的div中的第一个添加class
查看>>
C# 中out,ref,params参数的使用
查看>>
Java统计文件夹中文件总行数
查看>>
python之基本数据类型及深浅拷贝
查看>>
将bootstrap弹出框的点击弹出改为鼠标移入弹出
查看>>
SKF密码设备研究
查看>>
数据对象映射模式(通过工厂模式和注册树模式)v2
查看>>
4939 欧拉函数[一中数论随堂练]
查看>>
MySQL笔记(一)
查看>>
spring boot 包jar运行
查看>>
18年秋季学习总结
查看>>
Effective前端1:能使用html/css解决的问题就不要使用JS
查看>>
网络攻防 实验一
查看>>
由莫名其妙的错误开始---浅谈jquery的dom节点创建
查看>>
磨刀-CodeWarrior11生成的Makefile解析
查看>>
String StringBuffer StringBuilder对比
查看>>
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>