keil中无法跳转到定义的情况有多种情况:
1、工程编译不成功,这种情况肯定跳转不到定义的,这时只能根据编译提示信息检查程序直到程序正常通过编译吧。
2、工程未编译或工程清空编译信息后未再进行编译,肯定会跳转不到定义处,这时一般再编译一次工程就可以了。
3、某些寄存器变量,枚举类型或结构体变量。
4、定义的全局变量和局部变量同名(这真是一个程序员不应该有的毛病!)。
5、keil工程在在含有中文的目录下,这时将工程移出中文目录。新建立工程时尽量放在不含中文目录的文件夹中。
6、keil工程所在目录上级文件夹太多,此时应该将整个工程移出在某个根目录或文件夹层次不多的目录下。
7、能正常编译但编译结果出现以下信息:
*** Using Compiler 'V5.06 update 2 (build 183)', folder: 'H:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Flash'
After Build - User command #1: CopyHex_Flash.bat
".\Flash\Obj\output.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:00
如图:
此时按F12可能会弹出以下提醒:
No Browse Information available in ‘……’
Check -[Target-Option]……等信息。
这种情况根据提示信息将option选项中output中Browse Information选项勾上即可。
8、最近使用keil5.27,发现这个版本的keil对工程路径要求越来越严了,如果工程存放路径包含中文在查找定义时可能会出现跳转不到定义,并且编译器左下角会弹出红色的提示"No Information available for the selected symbol"。
这种情况可能跟编译器有关,这个版本的keil使用的默认编译器版本是V6.0以上的了,新出的一些芯片厂家固件里可能都是参照V6.0以上的编译器处理的,如果你的keil中还有V5系列的编译器可以验证一下,看切换编译器版本后还能不能成功编译工程。
另外,如果工程的存放目录级数过多也会出现类似的情况,这种现象原来的版本也遇到过只是不会有提示,并且老版本能存的级数似乎比这个版本多(没有实际测试),所以解决的办法就是规范存放工程后再重新编译(不要寄希望于这些软件开发商官方对中文友好)。
有时可能你把所有目录改成英文,并且目录级数也不多还是有可能用着用着就突然有出现以上问题了,这时候也就只能关闭工程重新再打开编译试试了。
哈哈哈,气人不气人,不过不要气,因为你是程序员呀,生气伤身,何必呢,还是努力吧。