Jump to content

    

Почему не работает перемещение по функциям в Keil?

Почему может не работать контекстное меню (горячие клавиши тоже не работают) для перемещения по коду и файлам к

реализациям функций, их объявлений п т.п. ( go to definition например) в Keil 5.26 на С/С++ ?

Share this post


Link to post
Share on other sites

В настройках проекта во вкладке "Output" галочка напротив "Browse Information" стоит?

Share this post


Link to post
Share on other sites

Такая ситуация происходит (может происходить) из за "косяков" в h-файлах, а именно условных включений, сложных макросов итп, 

а также порядка упоминания h-файлов, циклического их включения итп. Короче, если броузер "запутался" в зависимостях-последовательностях.

Он же, в конце концов, не компилятор.

1. "Разденьте" проект, до уровня, когда броузер начнет работать.

2. Аккуратно добавляйте модули, не допуская "завеса" броузера.

Хотя причиной может быть и банальный глюк IDE.

 

Share this post


Link to post
Share on other sites

А как объяснить что редактор кода Кейла видит что вызов функции с ошибкой, и если я исправлю  вызов или реализацию функции,

то ошибка пропадает, но перейти к ней он не может?

Share this post


Link to post
Share on other sites

У меня ни разу такое поведение Keil не наблюдалось. А версий Keil-а у меня было предостаточно.

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

Share this post


Link to post
Share on other sites
45 minutes ago, Donker said:

А как объяснить что редактор кода Кейла видит что вызов функции с ошибкой, и если я исправлю  вызов или реализацию функции, то ошибка пропадает, но перейти к ней он не может?

Ошибку Вам выдает компилятор после первоначальной обработки препроцессором, который распутывает для компилятора макросы, #include итд.

Если в синтаксисе и логике включений, макросов (какой бы запутанной она не была) ошибок нет, то препроцессор и компилятор отработают и ошибок  не выдадут (может будет warning), получите исполнимый модуль (+линкер, естественно).

А вот броузер может на чем-то заткнуться (у него меньший интеллект чем у препроцессора и компилятора), и определить что именно вызвало "затык" достаточно сложно, тк броузер диагностику не выдает. "Не шмогла ... " - и все.

Share this post


Link to post
Share on other sites

Проект собрался, по функциям переходит.

P.S. Заголовочные файлы .h в проект добавлять нет необходимости. Добавляются только исходные тексты .c.

P.S. Лучше создавать проект без кодогенераторов и прочего Keil-овского хлама - CMSIS викинуть, Device тоже. Вместо них вложить в проект папки с нужными заголовочными файлами/исходными файлами и, таким образом, вовсе отвязаться от настроек среды.

Share this post


Link to post
Share on other sites

А какая у вас версия Keil?

 

Клавиши F12 и Ctrl+F12 у вас тоже работают?

 

Откуда такая разница в поведении на одинаковом проекте?

Edited by Donker

Share this post


Link to post
Share on other sites

Моя версия 5.25. Клавиши не проверял, дома посмотрю.

Share this post


Link to post
Share on other sites

Переключитесь на Default Compiler v5, примените. Соберите проект. Переключитесь обратно на версию v6, соберите.

Share this post


Link to post
Share on other sites

 

Спасибо Arlleex, выбор стандартного компилятора 5 версии решает проблему, но можно ли как то заставить нормально работать  6 версию?

(возврат на 6 версию проблему возвращает)

Edited by Donker

Share this post


Link to post
Share on other sites

Не знаю. У меня после перехода обратно на v6 все также заработало.

Share this post


Link to post
Share on other sites

Почитайте внимательно warning (если есть) - тк это потенциальные ошибки, которые могут восприниматься как ошибки для работы броузера.

Загнал Ваши файлы в MS Visual Studio - броузер (по правой кнопке) работает. Правда в MSVS есть такая весч как precompiled header :)

Я бы поставил софт на пустую ОС с нуля. 

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

Файл ffconf.h включается косвено в несколько файлов, но не имеет #ifndef.

Возможно установлены "коррелирующиеся" опции настроек компилятора, которые блокируют работу броузера.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this