You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C宏预处理器:在字符串中插入十进制控制码

实现十进制控制码插入的CC宏方案

要实现用十进制数插入控制码到字符串的需求,我们可以利用C语言的预处理器数值计算和八进制转义序列特性,编写如下宏:

// 计算八进制各位数字(适用于0-255范围的控制码)
#define OCT_HIGH(n) ((n) / 64 % 8)
#define OCT_MID(n) ((n) / 8 % 8)
#define OCT_LOW(n) ((n) % 8)

// 生成对应十进制数的控制码字符串片段
#define CC(n) "\\" #OCT_HIGH(n) #OCT_MID(n) #OCT_LOW(n)

使用示例

按照你的需求编写代码:

// Decimal 10 and 13 are ASCII LF and CR resp.
char mystring[] = "This is line 1" CC(10) CC(13) "This is line 2";

这段代码会被预处理器展开为:

char mystring[] = "This is line 1" "\012" "\015" "This is line 2";

其中\012对应十进制10(LF换行符),\015对应十进制13(CR回车符),相邻的字符串字面量会被编译器自动合并为一个完整字符串,最终mystring的内容就是带换行和回车的完整文本。

说明

  • 该宏适用于0-255范围内的十进制控制码,覆盖了常见ASCII控制码及自定义硬件的控制码需求。
  • 预处理器会自动将输入的十进制数转换为对应的八进制转义序列,确保编译时直接生成目标字符,无需运行时计算。

内容的提问来源于stack exchange,提问作者Kay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:31:10