gpt4 book ai didi

将#defined 常量数字转换为字符串

转载 作者:太空狗 更新时间:2023-10-29 14:50:25 24 4
gpt4 key购买 nike

我定义了一个常量:

#define MAX_STR_LEN 100

我正在尝试这样做:

scanf("%" MAX_STR_LEN "s", p_buf);

但这当然行不通。

可以使用什么预处理器技巧将 MAX_STR_LEN numerica 转换为字符串,以便我可以在上面的 scanf 调用中使用它?基本上:

scanf("%" XYZ(MAX_STR_LEN) "s", p_buf);

XYZ() 应该是什么?

注意:我当然可以直接执行“%100s”,但这违背了目的。我也可以执行 #define MAX_STR_LEN_STR "100",但我希望有一个更优雅的解决方案。

最佳答案

使用# 预处理运算符。此运算符仅在宏扩展期间有效,因此您需要一些宏来提供帮助。此外,由于宏替换算法固有的特性,您需要一个间接层。结果如下所示:

#define STRINGIZE_(x) #x
#define STRINGIZE(x) STRINGIZE_(x)

scanf("%" STRINGIZE(MAX_STR_LEN) "s", p_buf);

关于将#defined 常量数字转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12648988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com