История изменений
Исправление MOPKOBKA, (текущая версия) :
Тоже хотел пример x macro привести. Просто язык препроцессора, не позволяющий делать нечто невообразимое как в Rust, и который не выглядит как смесь m4 с кодом на Perl в этих забавных конкурсах где люди пытаются сделать исходник более запутанным.
Препроцессор умеет переводить токены в строки, второй аргумент если он дублирует первый, не обязателен:
#include <stdio.h>
#define COLOR_TABLE \
X(red) \
X(green) \
X(blue)
#define X(a) a,
enum COLOR { COLOR_TABLE };
#undef X
#define X(a) #a,
char *color_name[] = {COLOR_TABLE};
#undef X
int main() {
enum COLOR c = red;
printf("c=%s\n", color_name[c]);
return 0;
}
gcc так же расширяет препроцессор, но не вводит каких то страшных вещей.
#define lambda(RetType, Body) ({ RetType RetVal Body RetVal; })
Исправление MOPKOBKA, :
Тоже хотел пример x macro привести. Просто язык препроцессора, не позволяющий делать нечто невообразимое как в Rust, и который не выглядит как смесь m4 с кодом на Perl в этих забавных конкурсах где люди пытаются сделать исходник более запутанным.
gcc так же расширяет препроцессор, но не вводит каких то страшных вещей.
#define lambda(RetType, Body) ({ RetType RetVal Body RetVal; })
Исправление MOPKOBKA, :
Тоже хотел пример x macro привести. Просто язык препроцессора, не позволяющий делать нечто невообразимое как в Rust, и который не выглядит как смесь m4 с кодом на Perl в этих забавных конкурсах где люди пытаются сделать исходник более запутанным.
gcc так же расширяет препроцессор, но не вводит каких то страшных вещей.
#define lambda(ret_type, _body) ({ ret_type _ _body _; })
Исходная версия MOPKOBKA, :
Тоже хотел пример x macro привести. Просто язык препроцессора, не позволяющий делать нечто невообразимое как в Rust, и который не выглядит как смесь m4 с кодом на Perl в этих забавных конкурсах где люди пытаются сделать исходник более запутанным.
gcc так же расширяет препроцессор, но не вводит каких то страшных вещей.