Здравствуйте, jyuyjiyuijyu, Вы писали:
J>допустим я хочу открыть исходники без этого "мусора" (тоесть финальный вариант без грязного+отладочного+параноидального кода) J>как в такой ситуации поступать ? J>написать утилиту которая будет выкусывать все _DEBUG секции из файла ? J>спасибо
Единицей трансляции в С++ является код после обработки его препроцессором.
В принципе у компилятора должен быть ключик типа вывести код после препроцессора.
Или просто пропустить код через препроцессор.
nixman тебе точно скажет.
Но писать точно ничего не нужно.
Правда в единица трансляции "раскрыты" и все инклюды.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Единицей трансляции в С++ является код после обработки его препроцессором. LVV>В принципе у компилятора должен быть ключик типа вывести код после препроцессора. LVV>Или просто пропустить код через препроцессор. LVV>nixman тебе точно скажет. LVV>Но писать точно ничего не нужно. LVV>Правда в единица трансляции "раскрыты" и все инклюды.
Не, Лаптев, это будет куда большим куском мусора, чем изначальный код с отладочными кусками.
Я бы скрипт какой-нибудь сваял, благо разбор простой. Язык для скрипта — какой больше нравится/лучше знаешь.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, LaptevVV, Вы писали:
LVV>Единицей трансляции в С++ является код после обработки его препроцессором. LVV>В принципе у компилятора должен быть ключик типа вывести код после препроцессора. LVV>Или просто пропустить код через препроцессор. LVV>nixman тебе точно скажет.
Препроцессор называется cpp, тут и к nixmanу ходить не надо.
LVV>Но писать точно ничего не нужно. LVV>Правда в единица трансляции "раскрыты" и все инклюды.
Не просто раскрыты инклюды, а еще и все символы и макросы, определенные через #define, будут заменены своими непосредственными значениями. Всякие __LINE__, __FILE__, etc — тоже.
Т.е. вместо чистого кода без дебага получится много-много килобайт неудобоваримой лапши в начале каждого файла, а потом пойдет собственно код с развернутыми макросами и дефайнами.
И кстати, полученный сырец станет платформо-зависимым, т.к. в него будут вкомпилены системные хедеры.
Писать конечно, ничего не надо, все уже написано до нас:
Здравствуйте, Ops, Вы писали:
Ops>Здравствуйте, LaptevVV, Вы писали:
LVV>>Единицей трансляции в С++ является код после обработки его препроцессором. LVV>>В принципе у компилятора должен быть ключик типа вывести код после препроцессора. LVV>>Или просто пропустить код через препроцессор. LVV>>nixman тебе точно скажет. LVV>>Но писать точно ничего не нужно. LVV>>Правда в единица трансляции "раскрыты" и все инклюды.
Ops>Не, Лаптев, это будет куда большим куском мусора, чем изначальный код с отладочными кусками. Ops>Я бы скрипт какой-нибудь сваял, благо разбор простой. Язык для скрипта — какой больше нравится/лучше знаешь.
Да, наверное, это будет лучше.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, jyuyjiyuijyu, Вы писали:
Смотря какая цель.
Если просто посмотреть, то как минимум Eclipse (уверен что любая вменяемая среда позволяет делать это) меняет подсветку блоков кода который не учавствует в компиляции. Если задать __DEBUG = 0 в настройках то блок
#if __DEBUG
...
#endif
будет серого цвета. В новых версиях эти блоки можно свернуть.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>вариант с обработкой стандартным препроцессором мне категорически не нравится...
J>так как в коде раскроются любые другие макросы вместе с выкусыванием кусков _DEBUG
Выполнить условные директивы без раскрытия макросов можно если дополнительно указать ключ '-fdirectives-only'.
Впрочем, даже без раскрытия макросов получается та ещё портянка.
этим самым создаем пункт в контекстном меню *.cpp файлов
стоит кликнуть этот пункт и unifdef удалит все _DEBUG из файла in-place
ВАЖНО!!!
утилита консольная и это вызывает появление консольного окна на доли секунды поэтому
собранный бинарик открываем в любом пе-вьювере и меняем подсистему с CUI на GUI или колдуем
так чтобы сразу собрать GUI