【问题标题】:Embed result of sizeof() offsetof() macros into a const char array?将 sizeof() offsetof() 宏的结果嵌入到 const char 数组中?
【发布时间】:2012-01-29 12:08:04
【问题描述】:

可以使用 C 预处理器宏来生成下面的字符串,其中 size 是 sizeof 宏的结果?

const char testXmlElement [] = "&lt xs:element name="count" size="4" \&gt";

使用字符串化宏会生成结果 size="sizeof(int)" 而不是所需的结果 size="4"。

#define xstr(s) str(s) #define str(s) #s const char testXmlElement[] = "&lt元素大小=\"" xstr(sizeof(int)) "\"" " \\&gt";

我的目的是使用 sizeof() 和 offsetof() 宏在嵌入式微控制器应用程序中创建 XML 模式。生成的模式将用于将 XML 反序列化为嵌套的 C 数据结构。

提前致谢,

【问题讨论】:

    标签: string macros embed constants sizeof


    【解决方案1】:

    我不相信。预处理器在编译器之前运行,sizeof 被编译器解释。

    【讨论】:

    • 对,sizeof 是运算符,而不是宏。 offsetof 是一个宏,但它扩展为一个整数常量表达式,预处理器可能无法计算它。将offsetof() 的结果字符串化将为您提供一个中等复杂的表达式,而不是整数文字。
    • 感谢您帮助我理解并指出 sizeof 是一个运算符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2023-04-08
    • 1970-01-01
    • 2014-07-17
    相关资源
    最近更新 更多