LINUX.ORG.RU

diff после каждой директивы препроцессора C

 , ,


0

3

Хотелось бы, чтобы перед каждым изменением препроцессор сохранял текущее состояние файла, чтобы потом эти состояния можно было сравнивать друг с другом.

Есть ли что-нибудь готовое? Умеют ли что-то похожее препроцессоры, которые идут с GCC и Clang?

Насколько трудоемким будет написать свой препроцессор? Есть ли формальное описание того, как он должен работать? Можно ли взять откуда-то готовые тесты?

Ответ на: комментарий от EXL

Он хочет что-то вроде дебаггера для препроцессора.

Да я примерно догадался. Но дебаггер же тоже не для поиграться, а для конкретной цели. Ведь цель должна оправдывать вложения. Ну скажем, а можно получить пошаговый вывод скажем в ассемблер при компиляции? ;) Правильно - это сделать трудно и не понятно зачем.

vodz ★★★★★
()

Нету, как уже сказали - заведи отдельный бранч в git и комить туда бинарники при компиляции в сценарии Makefile или что там у тебя.

ioway
()
Ответ на: комментарий от neon1ks

С помощью gcc -E генерируешь файл и ставишь его на учет в git)

Плюсую.

den73 ★★★★★
()
Ответ на: комментарий от neon1ks

С помощью gcc -E генерируешь файл и ставишь его на учет в git)

Это не то, чего я хочу. Для

#define A 1                       
#define B 2                       

A                                 
B                                 

gcc -E сгенерирует только один файл, а мне нужно два:

                       
#define B 2                       

1                     
B                                 

и


1
2
Anatolik ★★
() автор топика
Ответ на: комментарий от Anatolik

Ну напишите прогу, которая будет комментить все //#define, кроме первого, ей будете подсовывать предыдущий вывод. А потом сами у сеья будете спрашивать, вот тут надо это делать для всего из #include, или лучше ну его нафиг, так как приведёт к такому огромному вложенному циклу, что читать будете до конца своих дней.

vodz ★★★★★
()
Ответ на: XYZ problem от Crocodoom

Просто чтобы лучше понимать, что происходит. Я думаю, что это может быть очень полезным при отладке вложенных макросов.

Anatolik ★★
() автор топика
Ответ на: комментарий от xaizek

Спасибо.

Я думаю, лучше всего смотреть на то, как реализовано в GCC и Clang, и писать свое.

Еще нашел на JS два:

https://github.com/parksprojets/C-Preprocessor

https://github.com/acgessler/cpp.js

Anatolik ★★
() автор топика
Последнее исправление: Anatolik (всего исправлений: 1)
Ответ на: комментарий от Anatolik

Я думаю, что это может быть очень полезным при отладке вложенных макросов.

Лучше тогда макросы вообще не использовать.

Dudraug ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.