1
是否可以使用C預處理器宏來生成以下字符串,其中size是宏的sizeof的結果?將sizeof()offsetof()宏的結果嵌入到const char數組中?
const char testXmlElement [] = "< xs:element name="count" size="4" \>";
使用字符串化宏將生成結果size =「sizeof(int)」,而不是所需的結果size =「4」。
#define xstr(s) str(s) #define str(s) #s const char testXmlElement[] = "<element size=\"" xstr(sizeof(int)) "\"" " \\>";
我的目的是在同時使用的sizeof()和offsetof()宏的嵌入式微控制器應用程序來創建一個XML架構。生成的模式將用於將XML反序列化爲嵌套的C數據結構。
在此先感謝,
對,'sizeof'是一個操作符,而不是宏。 'offsetof'是一個宏,但它擴展爲一個整型常量表達式,預處理器可能無法評估。對'offsetof()'的結果進行字符串化將爲您提供一個適度複雜的表達式,而不是整數字面值。 –
謝謝你幫助我理解並指出sizeof是一個運營商。 –