• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

KEIL 里面变量为啥能跳转但是编译说没有定义该变量

qiuqiu 2018-08-10 浏览量:4516
求大佬们解释一下,为什么KEIL 里面变量能跳转但是编译说没有定义该变量
5 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 因为,你使用了条件预编译。

    即该段代码,虽然写了,因为预编译的指令条件不成立,则该段的代码,编译器不编译,相当于没有这段代码,所以才会说没有定义改变量.


    l例如: 如果我在程序中,没有定义VECT_TAB_SRAM  这个宏、

    #ifdef VECT_TAB_SRAM
      SCB->VTOR = SRAM_base | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
    #else
      SCB->VTOR = FLASH_base | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
    #endif

    此时,编译器只编译:SCB->VTOR = FLASH_base | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */

    上面的SCB->VTOR = SRAM_base | VECT_TAB_OFFSET; 则不进行编译。你在这个段里面定义的变量、代码通通不编译。

    • 发布于 2018-08-10
    • 举报
    • 评论 0
    • 8
    • 0

其他答案 数量:21
  • 这情况一般是变量没有声明但是有定义,或者声明不在头文件里面在源文件里面,而工程没有加入该源文件。
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

KEIL 里面变量为啥能跳转但是编译说没有定义该变量