Как предварительно обработать базу кода с помощью препроцессора clang (или gcc), ограничивая его текстовую обработку, чтобы использовать только #define записи из одного файла заголовка?Как ограничить объем используемых определений предварительной обработки?
Это полезен в целом: представьте, что вы хотите, чтобы просмотреть немедленный результат некоторых макросов, которые в настоящее время работают на ... не имея все помехи, которая является результатом горы включает в себя присущим С.
Представьте случай , где есть макросы, которые дают обратный совместимый вызов или обновленный, основанный на доступности функций.
#if __has_feature(XYZ)
# define JX_FOO(_o) new_foo(_o)
# define JX_BAR(_o) // nop
...
#else
# define JX_FOO(_o) old_foo(_o)
# define JX_BAR(_o) old_bar(_o)
...
#endif
Конкретный пример представляет собой набор кода Objective-C, который был перенесен, чтобы быть АРК-совместимый (Автоматический подсчет ссылок) из эксплуатации управления памятью (не-ARC), используя набор макросов (https://github.com/JanX2/google-diff-match-patch-Objective-C/blob/master/JXArcCompatibilityMacros.h), так что он компилирует оба пути позже.
В какой-то момент вы хотите отказаться от поддержки без ARC для повышения удобочитаемости и ремонтопригодности.
Edit: Основанием для получения вывода препроцессора описано здесь: C, Objective-C preprocessor output
Edit 2: Если кто-то имеет информацию о том, как источник-источник вариантов преобразования в Xcode реализуются (Edit> Рефакторинг> Преобразовать в ...), которые могут помочь.
Если бы я сделал это для своих макросов, это привело бы к тому, что я хочу. Если я сделаю это для всех немакробных файлов, источники будут беспорядочными, и результат все равно содержит все неявно включенные заголовки (даже если я временно перехожу на этот маршрут). – JanX2
Нет другого чистого способа, о котором я знаю. Возможно, создайте файл, который включает только другие файлы, включая все включенные туда, а затем включите его внутри '#ifndef ... # endif' (или просто закомментируйте включение этого файла, когда это необходимо). – Kelm
На самом деле мне не нужен способ C. Что мне нужно - это способ (неверно) использовать препроцессор C определенным образом. – JanX2