Перейти к содержанию
    

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 minutes ago, Donker said:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот например:

https://yadi.sk/d/w98_y4E7kJN6Eg

 

Версия Keil 5.26

Изменено пользователем Donker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Изменено пользователем Donker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

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

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

Изменено пользователем Donker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...