String 是否将sizeof()offsetof()宏的结果嵌入常量字符数组?
是否可以使用C预处理程序宏生成以下字符串,其中size是sizeof宏的结果 const char testXmlElement [] = "< xs:element name="count" size="4" \>"; const char testxmlement[]=“< xs:element name=“count”size=“4”\>”; 使用字符串化宏将生成结果size=“sizeof(int)”而不是所需的结果size=“4” #定义xstr(s)str(s) #定义str(s)#s 常量字符testXmlElement[]= “<element大小=\”“ xstr(sizeof(int)) "\"" “\\>”; 我的意图是使用sizeof()和offsetof()宏在嵌入式微控制器应用程序中创建XML模式。生成的模式将用于将XML反序列化为嵌套的C数据结构String 是否将sizeof()offsetof()宏的结果嵌入常量字符数组?,string,macros,embed,constants,sizeof,String,Macros,Embed,Constants,Sizeof,是否可以使用C预处理程序宏生成以下字符串,其中size是sizeof宏的结果 const char testXmlElement [] = "< xs:element name="count" size="4" \>"; const char testxmlement[]=“< xs:element name=“count”size=“4”\>”; 使用字符串化宏将生成结果size=“sizeof(int)”而不是所需的结果size=“4” #定义xstr(s)str(s) #定
提前谢谢,我不这么认为。预处理器在编译器之前运行,
sizeof
由编译器解释。对,sizeof
是运算符,而不是宏offsetof
是一个宏,但它扩展为一个整数常量表达式,预处理器可能无法计算该表达式。对offsetof()
的结果进行字符串化将得到一个中等复杂的表达式,而不是整数文本。感谢你们帮助我理解并指出sizeof是一个运算符。
#define xstr(s) str(s)
#define str(s) #s
const char testXmlElement[] =
"<element size=\""
xstr(sizeof(int))
"\""
" \\>";