ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1002512 Топик полностью
Vit (08.05.2020 02:03, просмотров: 219) ответил IBAH на но тогда как проконтролировать вызов функции... можно конечно объявить функцию локально, но где тогда смысл? Данная задача должна решатся функциями компилятора-линкера, Для переменных помеченная определенным модификатором, компилятор в объектнике выставляет счетчик модификаций, и линкер, просмотрев все модули, выкидывает предупреждение
Встречал как-то кулхацкерский вариант с неполным объявлением типа и жонглированием typedef. Исходная идея была другая - изолированно компилировать модули. Оно рушилось при включении полного объявления перед неполным, но это обходилось ручками. В результате применения вылезли бока - типы (структуры) в разных модулях со временем разъехались чуток (где-то чего-то добавили, 

поменяли), а я как раз на это напоролся и пришлось выметать поганой метлой.

Т.е. в одном файле был полный typedef на структуру, в другом был неполный typedef на структуру с таким же именем и ниже полный, но структуры были по факту объявления разными, и пока они не пересекались областями видимости, всё компилилось и собиралось. GCC это дело благополучно прятал (флаг -fno-common не был установлен)...

Ещё есть практика использовать config.h без защиты от двойного включения.

Кроме того, есть прекрасные вещи типа #if !defined(), приобретающие смысл при включении дополнительных хедеров, без которых в принципе всё и так компилится:)

Ещё припоминается директива #undef...

Также можно подумать о "нетрадиционном" использовании атрибута weak

Но понять, что желаете получить в плане юзабилити, у меня пока не получается