#c #typedef
Допустим, есть такой код: typedef int i32; Как узнать, был ли тип i32 уже объявлен ранее? Т. е. что-то типа #ifdef только для typedef.
Ответы
Ответ 1
Никак не узнать. Если дальновидный автор кода предвидит необходимость такой проверки в будущем, он обычно сопровождает определения типов определением дополнительного макро. Так, например, стандартный заголовочный файлсодержит определение макро __bool_true_false_are_defined со значением 1. Ответ 2
Есть метод двойной компиляции, знаю как в Linux через Makefile это делать. Сначала компилируется простой файл с typedef. Затем проверяется код ошибки компиляции, и задаётся #define TYPEREDEFINIED. Makefile : main.o : main.c main.h ..TAB..: if gcc checktypedef.c &> /dev/null ; then ; else OPTIONFORGCC = -DTYPEREDEFINIED ; fi ..TAB..: gcc OPTIONFORGCC main.c .. checktypedef.c : # include <все заголовки из main> typedef unsigned char BYTE ; main.c : # include <все заголовки> # ifdef TYPEREDEFINIED # error Опять! # endifОтвет 3
Возможно обьявить все используемые хеадеры в одном файле test.c например, потом: gcc -E test.c | grep "int32my" и смотрим результат :)
Комментариев нет:
Отправить комментарий