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

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

瞩目人kri 2018-08-09 浏览量:1133
KEIL 里面变量为啥能跳转但是编译说没有定义该变量
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这种现象是由于C语言中变量的作用域导致的。虽然你声明的是一个全局变量,但是如果不在另外引用它的文件中加外部变量声明的话,这个变量就只能在定义它的文件中使用,楼主可以了解一下变量的作用域,就会明白了。 解决办法,5楼说得差不多了,我再补充一下,如果A.c文件中定义了变量tmp: 而在B.c文件中想引用这个变量的话 ...
    • 发布于 2018-08-09
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:17
  • 在你定义的变量前加修饰词volatile就可以了。
    • 发布于2018-08-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为你只引用了.但是没有定义它.是不是两个C文件都是直接复制的?
    • 发布于2018-08-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 全局变量  没有引用 加volatile
    • 发布于2018-08-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 定义一个变量,在其他文件里用要extern一下。或者在变量前加volatile
    • 发布于2018-08-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 你要把工程都编译一下才可以的。

    或是开了优化选项了

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

  • 是否没有用extern或者没有包含那个头文件
    • 发布于2018-08-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 定义变量在其他文件应用需要extern声明一下,或者在一个头文件里声明,然后其他要用的文件包含这个头文件。
    • 发布于2018-08-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是你的变量的作用域导致的,全局变量要进行声明才能在其他文件中使用
    • 发布于2018-08-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 是你的变量作用域存在问题,要重新对你的变量进行声明
    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个情况应该是你变量没有在头文件声明,在源文件声明了,但是源文件又没有添加到你工程里面去。
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 只能说你的变量是存在的  但是你有的文件使用了但是没有定义
    • 发布于2018-09-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

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