| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > вывести список макросов |
| Автор: slater 1.4.2010, 08:43 | ||
| приветствую всех ребята, скажите плиз, как узнать(вывести) в определенном месте исходного файла список определленных(доступных) макросов? например, в одном хидере мы определили макрос #define MACROS 555 этот хидер мы подключили в основную программу, понятно, что этот макрос есть и доступен. но что делать и как узнать, если, например, этот подключаемый хидер содержит другие подключаемые хидеры, а те,в свою очередь, другие...т.е. не уследишь за макросами вот, а мне хотелось бы понять, как,например, в определенном месте узнать какие макросы определены, а какие нет. как это можно узнать? (про
я знаю, но тут мы только можем проверить сам макрос, определен он или нет) и еще непонятен такой вопрос, макросы могут только определяться в исходных кодах или же каким то образом они схожи с переменными окружения(т.е. макросы могут определяться например в командных файлах или батниках), которые передаются процессу заранее признателен за помощь |
| Автор: MAKCim 1.4.2010, 08:58 | ||
прогоните нужный файл препроцессором
|
| Автор: slater 1.4.2010, 09:09 | ||||
| Ясно, спасибо т.е. макросы могет определяться только в хидерах, сишных файлах и передаваться через аргументы в main() в виде MACROS=тыры-пыры, но тогда вопрос, с макросами, переданные через аргументы, мы можем работать напрямую(т.е. спросить определен ли такой то макрос или нет) или через argv[] ? Добавлено через 3 минуты и 13 секунд
мне нужно узнать в определенном месте все определенные макросы и как то просмотреть их все |
| Автор: azesmcar 1.4.2010, 09:34 | ||||
Нет! я сказал а не программе
в каком виде их получить? распечатать на экран? чем grep не подходит? |
| Автор: slater 1.4.2010, 09:39 |
| grep выведет только определения имеющися макросов в файле, он не покажет тех макросов, которые этим файлом возможно включаются а если мы передаем компилятору аргументы, которые он будет считать макросами, значит каким то образом компилятор позволяет все макросы вывести, они ж храняться наверное в виде массива строк, или же не так? |
| Автор: azesmcar 1.4.2010, 09:48 | ||||
можно написать скрипт, который это сделает, попробуй
но он же у себя хранит а не передает программе в виде массива. Не могу придумать задачу под такие требования, зачем это нужно? |
| Автор: slater 1.4.2010, 09:52 |
| ну я имею ввиду наверное как то можно вывести список всех макросов с помощью компилятора(просто на экран) нужно это для того, чтобы, во-первых, знать какие есть неведомые макросы, во-вторых, использовать их по возможности в программе |
| Автор: azesmcar 1.4.2010, 09:56 | ||
Зачем о них знать? Все, что стандартно - описано в документации, все что нет - использованию не подлежит. макросы вообще НЕ СТОИТ использовать, их надо по возможности избегать. |
| Автор: slater 1.4.2010, 10:14 |
| [b]azesmcar[\b], вопрос не о полезности использования макросов и зачем оно надо!!! как вывести обработанный код с помощью препроцессора - я знаю, вопрос в том, как вывести с помощью компилятора список макросов, определенных в исходном тексте |
| Автор: MAKCim 1.4.2010, 10:28 | ||||
slater,
|
| Автор: azesmcar 1.4.2010, 10:47 | ||
с помощью компилятора - никак. |
| Автор: slater 1.4.2010, 11:20 |
| MAKCim, azesmcar, спасибо! |
| Автор: xvr 1.4.2010, 15:29 |
| С помощью компилятора (конкретно gcc) можно получить список всех файлов, которые включаются при компиляции данного файла (опции -M или -MM). Дальше grep на полученный список |
| Автор: slater 1.4.2010, 15:41 |
| xvr, спасибо |