#define的几点特殊用法

本文介绍了C/C++中使用宏定义实现字符串连接、字符与字符串转换的方法,并通过实例展示了如何利用这些技巧来创建和操作字符串。对于理解预处理器的工作方式及其实用性有很大帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#define Conn(x,y) x##y
#define ToChar(x) #@x

#define ToString(x) #x

x##y表示什么?表示x连接y,举例说:
int n = Conn(123,456);   结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";

再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:
char a = ToChar(1);结果就是a='1';
做个越界试验char a = ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant   :P

最后看看#x,估计你也明白了,他是给x加双引号
char* str = ToString(123132);就成了str="123132";

#include <TinyStepper_28BYJ_48.h> //步进电机的库 如果没有该lib请按Ctrl+Shift+I 从 库管理器中搜索 Stepper_28BYJ_48,并安装 #include <Servo.h> #include <SD.h> //需要SD卡读卡器模块,或者tf读卡器模块 如果没有该lib请按Ctrl+Shift+I 从 库管理器中搜索 SD,并安装 #include "FastLED.h" #define NUM_LEDS 6 //LED数目 #define DATA_PIN A3 //绿色数据线接在几号端口 long int TATOL_LINE = 0; long int curline=0; CRGB leds[NUM_LEDS]; //调试代码标志,去掉注释,可以输出调试信息(程序运行会慢) //#define VERBOSE (1) //调试标志 #define STEPS_PER_TURN (2048) //步进电机一周步长 2048步转360度 #define SPOOL_DIAMETER (35) //线轴直径mm #define SPOOL_CIRC (SPOOL_DIAMETER * 3.1416) //线轴周长 35*3.14=109.956 #define TPS (SPOOL_CIRC / STEPS_PER_TURN) //步进电机步距,最小分辨率 每步线绳被拉动的距离 0.053689mm #define step_delay 1 //步进电机每步的等候时间 (微妙) #define TPD 300 //转弯等待时间(毫秒),由于惯性笔会继续运动,暂定等待笔静止再运动。 //两个电机的旋转方向 1正转 -1反转 //调节进出方向可垂直反转图像 #define M1_REEL_OUT 1 //放出线 #define M1_REEL_IN -1 //卷入线 #define M2_REEL_OUT -1 //放出线 #define M2_REEL_IN 1 //卷入线 static long laststep1, laststep2; //当前线长度 记录笔位置 #define X_SEPARATION 450 //两绳上方的水平距离mm #define LIMXMAX ( X_SEPARATION*0.5) //x轴最大值 0位在画板中心 #define LIMXMIN (-X_SEPARATION*0.5) //x轴最小值 /* 垂直距离的参数: 正值在画板下放,理论上只要画板够大可以无限大,负值区域在笔(开机前)的上方 详细介绍见说明文档 https://github.com/shihaipeng03/Walldraw */ #define LIMYMAX (-550) //y轴最大值 画板最下方 #define LIMYMIN (550) //y轴最小值 画板最上方 左右两线的固定点到笔的垂直距离,尽量测量摆放准确,误差过大会有畸变 //值缩小画图变瘦长,值加大画图变矮胖 //抬笔舵机的角度参数 具体数值要看摆臂的安放位置,需要调节 #define PEN_UP_ANGLE 110 //抬笔 #define PEN_DOWN_ANGLE 20 //落笔 //需要调节的参数 ============================================= #define PEN_DOWN 1 //笔状态 下笔 #define PEN_UP 0 //笔状态 抬笔 // plotter position 笔位置. static float posx; static float posy; static float posz; // pen state // pen state 笔状态(抬笔,落笔). static int ps; /*以下为G代码通讯参数 */ #define BAUD (115200) //串口速率,用于传输G代码或调试 可选9600,57600,115200 或其他常用速率 // Serial comm reception static int sofar; // Serial
最新发布
03-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值