Страницы

Поиск по вопросам

вторник, 31 марта 2020 г.

Как узнать, был ли тип уже объявлен ранее?

#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" и смотрим результат :)

Комментариев нет:

Отправить комментарий