![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Domen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Доброго дня (ночи)!
Не могу проверить наличие функции до конца. В стек записывать и проверять одинаковые названия функций? Задание такое: Вывести список имен всех функций, содержащихся в файле. Реализую так:
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
имеется в виду поиск всех упоминаний функций (объявления, определения и вызовы) или что-то одно, например определения (реализации)?
|
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
bsa
смешивание средств работы с файлами/выделение памяти Си, выводом в стиле С++\Си вперемешку, это нормально?Просто, как я знаю это очень плохо и не понимаю почему смешивают средства все эти... можно прокомментировать это поподробней?(причины того почему плохо) |
|||
|
||||
Copyleft |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 22.5.2010 Репутация: нет Всего: нет |
хм, а не легче было бы заюзать например sscanf, вместо того чтоб городить огород? хотя возможно задание понял немного криво...
|
|||
|
||||
Domen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Все подряд встречающиеся функции, если есть одинаковые, то выдать одну. |
|||
|
||||
Domen |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Вот так он работает со строками?
|
||||
|
|||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Если все-все упоминания функций, то проще не бывает: находите "(", вытаскиваете строку от пробела/таба/переноса строки/начала файла до нее и выкидываете if, for и прочие стандартные конструкции.
//код не смотрел. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
kamre |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 2 Всего: 13 |
Очевидно, что это не будет работать, т.к. нужно знать контекст. Например для такого кода:
При этом для C++ придется обязательно заглядывать вперед для выяснения контекста:
|
||||||
|
|||||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
kamre, очевидно, что задача учебная. Кроме того int() можно рассматривать как конструктор, т.е. функцию.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
kamre |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 2 Всего: 13 |
А почему если учебная, то можно совсем некорректный подход выбирать?
Все равно нужно сначала заресолвить T, чтобы понять что это не вызов функции с именем T. |
||||
|
|||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
>А почему если учебная, то можно совсем некорректный подход выбирать?
Он некорректный, если вы пишите компилятор. В учебных целях - более чем корректный. Не думаю, что ставится задача провести полноценный лексический (а с учетом typedef-ов еще и частичный семантический) анализ. Это мое имхо, тем не менее топикстартер не назвал полностью задание и степень необходимой точности его решения, так что я могу быть не прав. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
Domen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Я думал, только надо проверить си файл на наличие функций, убрать повторяющиеся, пропустить записи в комментариях и вывести функции, которые есть (стандартные и свои).
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Domen, если тебе нужно парсить файл на языке С, то проблем никаких нет. Делай как тебе сказал djamshud: http://forum.vingrad.ru/index.php?showtopi...t&p=2158252
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |