Сегодня я только что закончил читать и экспериментировать на C о том, как использовать #define
для создания манифестной константы, после того, как что-то пришло мне в голову, и ниже приведен код.
#include <stdio.h>
#define dummy main
#define yam {
#define apple }
int dummy(void) //constant substitution main with dummy
yam // constant substitution { with yam
printf("It works!!\n");
return 0;
apple //constant substitution } with apple
Как и ожидалось, это работает как шарм, мне просто интересно, почему что-то подобное не вызывало никакой ошибки, может быть, я мог бы понять, почему main()
можно заменить, потому что main
является идентификатором (имя, данное функции переменная и постоянная), но почему {}
можно заменить символическим именем? Во-вторых, какой тип данных C используется для хранения этой символьной константы, которая не является символом, заключенным в одинарные кавычки ""
, ни целым числом или числом с плавающей запятой.