为了账号安全,请及时绑定邮箱和手机立即绑定

将预处理器令牌转换为字符串

将预处理器令牌转换为字符串

C
慕森王 2019-11-14 10:49:24
我正在寻找一种将预处理器令牌转换为字符串的方法。具体来说,我在某处:#define MAX_LEN 16我想用它来防止缓冲区溢出:char val[MAX_LEN+1]; // room for \0sscanf(buf, "%"MAX_LEN"s", val);我愿意采用其他方式来完成同一件事,但仅限于标准库。
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我在网上找到了答案。


#define VERSION_MAJOR 4

#define VERSION_MINOR 47


#define VERSION_STRING "v" #VERSION_MAJOR "." #VERSION_MINOR

上面的方法不起作用,但希望能说明我想做的事情,即使VERSION_STRING最终为“ v4.47”。


要生成适当的数字形式,请使用类似


#define VERSION_MAJOR 4

#define VERSION_MINOR 47


#define STRINGIZE2(s) #s

#define STRINGIZE(s) STRINGIZE2(s)

#define VERSION_STRING "v" STRINGIZE(VERSION_MAJOR) \

"." STRINGIZE(VERSION_MINOR)


#include <stdio.h>

int main() {

    printf ("%s\n", VERSION_STRING);

    return 0;

}


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 399 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信