Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 是否将sizeof()offsetof()宏的结果嵌入常量字符数组?_String_Macros_Embed_Constants_Sizeof - Fatal编程技术网

String 是否将sizeof()offsetof()宏的结果嵌入常量字符数组?

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) #定

是否可以使用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数据结构


提前谢谢,

我不这么认为。预处理器在编译器之前运行,
sizeof
由编译器解释。

对,
sizeof
是运算符,而不是宏
offsetof
是一个宏,但它扩展为一个整数常量表达式,预处理器可能无法计算该表达式。对
offsetof()
的结果进行字符串化将得到一个中等复杂的表达式,而不是整数文本。感谢你们帮助我理解并指出sizeof是一个运算符。 #define xstr(s) str(s) #define str(s) #s const char testXmlElement[] = "<element size=\"" xstr(sizeof(int)) "\"" " \\>";