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

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

qiuqiu 2018-08-10 浏览量:4494
求大佬们解释一下,为什么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-10
    • 举报
    • 评论 0
    • 5
    • 0

  • 多半是涉及条件编译预处理相关问题,所以可能你没有设置相关编译条件,则代码中有也不一定编译到了。
    • 发布于2018-08-10
    • 举报
    • 评论 0
    • 4
    • 0

  • 印象里这个问题刚有人问过。这个应该是变量作用域的问题,在一个文件里定义了一个变量,在其他文件里用了,但没有extern声明一下。
    • 发布于2018-08-11
    • 举报
    • 评论 0
    • 4
    • 0

  • 我觉得应该是条件编译引起的,要设置相关的编译条件。
    • 发布于2018-08-11
    • 举报
    • 评论 0
    • 4
    • 0

  • 这个是你的全局变量没有声明导致的,在你的全局变量的头文件加上extern
    • 发布于2018-08-11
    • 举报
    • 评论 0
    • 3
    • 0

  • 应该是条件编译引起的,有些条件是放在工程项目的属性中设置的,所以在文件中找不到相应的条目。
    • 发布于2018-08-11
    • 举报
    • 评论 0
    • 3
    • 0

  • 我觉得应该是条件编译引起的,要设置相关的编译条件。
    • 发布于2018-08-11
    • 举报
    • 评论 0
    • 3
    • 0

  • 看变量是否在宏定义范畴内,在则需要在编译参数加-D相应的宏名称
    • 发布于2018-08-12
    • 举报
    • 评论 0
    • 2
    • 0

  • 多个文件中变量互用,需要在对应的.h文件中进行申明!
    • 发布于2018-08-10
    • 举报
    • 评论 0
    • 1
    • 0

  • 没有定义时,是没有办法进行编译下载的,你又是从哪里看到的跳动呢
    • 发布于2018-08-12
    • 举报
    • 评论 0
    • 1
    • 0

  • 看一下那个头文件有没被包含,或者该函数是否被声明
    • 发布于2018-08-12
    • 举报
    • 评论 0
    • 1
    • 0

  • 是不是变量在其他c文件中调用,但是你没有对变量进行申明。或者使用条件预编译,因为不满足条件,所以不编译。
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 1
    • 0

  • 说明你的变量没有声明,所以要在你的变量定义的头文件里面进行变量的声明
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 1
    • 0

  • 变量应用需要声明,你虽然定义了,但在其他文件里使用,没有声明。
    • 发布于2018-08-16
    • 举报
    • 评论 0
    • 1
    • 0

  • 因为你的变量没有声明,所以要先声明变量再使用
    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 1
    • 0

  • 你所使用的变量没有申明,要先声明再使用
    • 发布于2018-08-19
    • 举报
    • 评论 0
    • 1
    • 0

  • 要重新对你变量进行声明,不然没有在全局使用
    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

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