stringification

Я хочу передать строку версии в команде компиляции: $ g++ -Wall -D VERSION="2013-12-03 02:15:21, commit cb060df" -o main main.cpp В моем коде есть следующее: #define TOSTR_(x) #x #define STRINGIFY(x) TOSTR_(x) #define VERSION_STR STRINGIFY(VERSION) Это не работает, потому что макрос VERSION содержит з...

Я смотрю на некоторые проекты с открытым исходным кодом и вижу следующее: NSLog(@"%s w=%f, h=%f", #size, size.width, size.height) Что именно означает ' # ' прямо перед символом размера? Это какой-то префикс дляC строк?...

У меня есть довольно общий код, который использует макросы препроцессора для добавления определенного префикса к другим макросам. Это очень упрощенный пример того, что происходит: #define MY_VAR(x) prefix_##x "prefix_" фактически определяется в другом месте, поэтому он будет отличаться каждый раз, когда ...

Как упоминалось во многих моих предыдущих вопросах, я работаю через K&R, и в настоящее время в препроцессор. Одна из самых интересных вещей-то, что я никогда не знал раньше ни от одной из моих предыдущих попыток узнать C-это ## оператор препроцессора. Согласно K&R: оператор препроцессора ## позв...

есть ли способ встроить оператор pragma в макрос с другими операторами? Я пытаюсь добиться что-то вроде: #define DEFINE_DELETE_OBJECT(type) void delete_ ## type_(int handle); void delete_ ## type(int handle); ...

по крайней мере, некоторых C препроцессоры позволяют вам строчить значение макроса, а не его имя, передавая его через один функциональный макрос другому, который его строчит: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ пример использов...