LINUX.ORG.RU

История изменений

Исправление 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 так же расширяет препроцессор, но не вводит каких то страшных вещей.