Вставить результат макроса sizeof () offsetof () в массив const char? - PullRequest
1 голос
/ 29 декабря 2011

Можно ли использовать макрос препроцессора 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[] =
"&ltelement size=\"" 
xstr(sizeof(int))
"\""
" \\&gt";

Я намеревался создать XML-схему во встроенном приложении микроконтроллера с использованием макросов sizeof () и offsetof (). Результирующая схема будет использоваться для десериализации XML для вложенных структур данных C.

Заранее спасибо,

1 Ответ

2 голосов
/ 29 декабря 2011

Я не верю в это. Препроцессор запускается перед компилятором, и sizeof интерпретируется компилятором.

...