![]() |
|
Модераторы: xvr |
![]()
|
|
| slater |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
приветствую всех
ребята, скажите плиз, как узнать(вывести) в определенном месте исходного файла список определленных(доступных) макросов? например, в одном хидере мы определили макрос #define MACROS 555 этот хидер мы подключили в основную программу, понятно, что этот макрос есть и доступен. но что делать и как узнать, если, например, этот подключаемый хидер содержит другие подключаемые хидеры, а те,в свою очередь, другие...т.е. не уследишь за макросами вот, а мне хотелось бы понять, как,например, в определенном месте узнать какие макросы определены, а какие нет. как это можно узнать? (про
я знаю, но тут мы только можем проверить сам макрос, определен он или нет) и еще непонятен такой вопрос, макросы могут только определяться в исходных кодах или же каким то образом они схожи с переменными окружения(т.е. макросы могут определяться например в командных файлах или батниках), которые передаются процессу заранее признателен за помощь |
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
ну и вопрос, даже не знаю что тут ответить.
а тебе что надо?
и заголовочных файлах, можно еще из командной строки передать компилятору.. какому процессы? макрос это препроцессорная директива, они заменяются еще до компиляции. |
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
прогоните нужный файл препроцессором
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| slater |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
Ясно, спасибо
т.е. макросы могет определяться только в хидерах, сишных файлах и передаваться через аргументы в main() в виде MACROS=тыры-пыры, но тогда вопрос, с макросами, переданные через аргументы, мы можем работать напрямую(т.е. спросить определен ли такой то макрос или нет) или через argv[] ? Добавлено через 3 минуты и 13 секунд мне нужно узнать в определенном месте все определенные макросы и как то просмотреть их все |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Нет! я сказал а не программе
в каком виде их получить? распечатать на экран? чем grep не подходит? |
||||
|
|||||
| slater |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
grep выведет только определения имеющися макросов в файле, он не покажет тех макросов, которые этим файлом возможно включаются
а если мы передаем компилятору аргументы, которые он будет считать макросами, значит каким то образом компилятор позволяет все макросы вывести, они ж храняться наверное в виде массива строк, или же не так? |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
можно написать скрипт, который это сделает, попробуй
но он же у себя хранит а не передает программе в виде массива. Не могу придумать задачу под такие требования, зачем это нужно? |
||||
|
|||||
| slater |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
ну я имею ввиду наверное как то можно вывести список всех макросов с помощью компилятора(просто на экран)
нужно это для того, чтобы, во-первых, знать какие есть неведомые макросы, во-вторых, использовать их по возможности в программе |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Зачем о них знать? Все, что стандартно - описано в документации, все что нет - использованию не подлежит. макросы вообще НЕ СТОИТ использовать, их надо по возможности избегать. Это сообщение отредактировал(а) azesmcar - 1.4.2010, 09:57 |
|||
|
||||
| slater |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
[b]azesmcar[\b], вопрос не о полезности использования макросов и зачем оно надо!!!
как вывести обработанный код с помощью препроцессора - я знаю, вопрос в том, как вывести с помощью компилятора список макросов, определенных в исходном тексте |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
slater,
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
||||
|
||||
| slater |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
MAKCim, azesmcar, спасибо!
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
С помощью компилятора (конкретно gcc) можно получить список всех файлов, которые включаются при компиляции данного файла (опции -M или -MM). Дальше grep на полученный список
Это сообщение отредактировал(а) xvr - 1.4.2010, 15:29 |
|||
|
||||
| slater |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
xvr, спасибо
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |