找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3217|回復: 20
打印 上一主題 下一主題
收起左側(cè)

關于C語言變量的一個非常奇怪的問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:410689 發(fā)表于 2020-3-5 19:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用keil5做一個項目,如果定義了這個變量“unsigned int red;”,程序完全正常,如果不定義,程序會出錯
關鍵的地方是,這個變量在整個程序中都不會用到,而且換個變量名也不行,請高人指點下。謝謝了啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:691449 發(fā)表于 2020-3-5 20:14 | 只看該作者
在c語言里,每一個用到的變量都需要定義。你說的
這個變量在整個程序中都不會用到
是說變量在代碼里從來都沒有出現(xiàn),編譯器仍然報錯嗎?是不是子程序用到了變量?
回復

使用道具 舉報

板凳
ID:462827 發(fā)表于 2020-3-5 22:53 | 只看該作者
出錯具體信息貼上來看看
回復

使用道具 舉報

地板
ID:699855 發(fā)表于 2020-3-5 23:02 來自手機 | 只看該作者
有用庫嗎
回復

使用道具 舉報

5#
ID:687694 發(fā)表于 2020-3-5 23:06 | 只看該作者
不會有這種事的,假如這個變量是在包含頭文件后就定義的,則為全局變量,在項目其他C文件中要用到的。通常較為規(guī)范的程序?qū)懛ǘ紩衙總外設寫在一個單獨的C文件中,然后通過頭文件包含進來。所以這個變量一定會被使用,否則不會報錯。
回復

使用道具 舉報

6#
ID:235200 發(fā)表于 2020-3-5 23:15 | 只看該作者
如果整個程序都沒用到的話,編程時定義這個變量的目的是什么?(難道你預先知道不定義就會有錯?)
回復

使用道具 舉報

7#
ID:487821 發(fā)表于 2020-3-6 00:38 | 只看該作者
肯定是在哪里用到了red,不然不可能的,你搜一下就出來了,程序里沒用到,也有可能你原來定義這個變量時又在哪里聲明了,把聲明函數(shù)搜出來一起刪了
回復

使用道具 舉報

8#
ID:410689 發(fā)表于 2020-3-6 09:18 | 只看該作者
xianming 發(fā)表于 2020-3-5 20:14
在c語言里,每一個用到的變量都需要定義。你說的 是說變量在代碼里從來都沒有出現(xiàn),編譯器仍然報錯嗎?是不 ...

你好,感謝你的回復,編譯器沒有報錯,程序也能運行,但結果是錯誤的。
回復

使用道具 舉報

9#
ID:410689 發(fā)表于 2020-3-6 09:20 | 只看該作者
hantu 發(fā)表于 2020-3-5 22:53
出錯具體信息貼上來看看

你好,感謝你的回復。
在保留變量的情況下,最終輸出是0個錯誤、0個警告。
在刪除變量的情況下,最終輸出也是0個錯誤、0個警告。
回復

使用道具 舉報

10#
ID:410689 發(fā)表于 2020-3-6 09:20 | 只看該作者

你好,感謝你的回復。
沒有用庫呢。。。。。
回復

使用道具 舉報

11#
ID:410689 發(fā)表于 2020-3-6 09:22 | 只看該作者
lovexulu 發(fā)表于 2020-3-5 23:06
不會有這種事的,假如這個變量是在包含頭文件后就定義的,則為全局變量,在項目其他C文件中要用到的 ...

你好,感謝你的回復。
開始我也以為是哪里有用到,但是搜索了整個工程,都沒有用到的地方。
在保留變量的情況下,最終輸出是0個錯誤、0個警告。
在刪除變量的情況下,最終輸出也是0個錯誤、0個警告。
回復

使用道具 舉報

12#
ID:410689 發(fā)表于 2020-3-6 09:28 | 只看該作者
csmyldl 發(fā)表于 2020-3-5 23:15
如果整個程序都沒用到的話,編程時定義這個變量的目的是什么?(難道你預先知道不定義就會有錯?)

你好,感謝你的回復。
代碼開始寫的時候有用到這個變量,后來在完善的時候就不再需要這個變量了。
在保留變量的情況下,最終輸出是0個錯誤、0個警告。
在刪除變量的情況下,最終輸出也是0個錯誤、0個警告。

我在寫代碼的時候有保留工作進程的習慣,就是寫一部分,調(diào)試成功后就保留起來,然后再復制一份接著做,這樣就能查找是在哪一級出現(xiàn)問題,所以才發(fā)現(xiàn)是這個問題,實驗了很多次,只要刪除這個沒有用的變量,輸出結果就會出錯。。。。。。。
回復

使用道具 舉報

13#
ID:410689 發(fā)表于 2020-3-6 09:29 | 只看該作者
faguiq 發(fā)表于 2020-3-6 00:38
肯定是在哪里用到了red,不然不可能的,你搜一下就出來了,程序里沒用到,也有可能你原來定義這個變量時又 ...

你好,感謝你的回復。
在保留變量的情況下,最終輸出是0個錯誤、0個警告。
在刪除變量的情況下,最終輸出也是0個錯誤、0個警告。
搜索了整個工程,都沒有用到的地方啊。。。。。。。
回復

使用道具 舉報

14#
ID:487821 發(fā)表于 2020-3-6 21:38 | 只看該作者
wuxiaojia 發(fā)表于 2020-3-6 09:29
你好,感謝你的回復。
在保留變量的情況下,最終輸出是0個錯誤、0個警告。
在刪除變量的情況下,最終輸 ...

重載一下工程
回復

使用道具 舉報

15#
ID:410689 發(fā)表于 2020-3-7 18:13 | 只看該作者

謝謝你了,我試了你說的方法,還是不行呢。。。。。。
回復

使用道具 舉報

16#
ID:704513 發(fā)表于 2020-3-8 13:48 | 只看該作者
定義的unsigned int red是局部變量?考慮給unsigned int red賦一些值看看運行結果。
回復

使用道具 舉報

17#
ID:700528 發(fā)表于 2020-3-8 14:39 | 只看該作者
把部分代碼貼出來讓大家給你把把脈
回復

使用道具 舉報

18#
ID:210139 發(fā)表于 2020-3-8 17:47 | 只看該作者
把程序關掉重新打開程序,或者全局查找一下,看有沒有被用到的地方
回復

使用道具 舉報

19#
ID:410689 發(fā)表于 2020-3-11 17:30 | 只看該作者
awrynos 發(fā)表于 2020-3-8 13:48
定義的unsigned int red是局部變量?考慮給unsigned int red賦一些值看看運行結果。

你好,感謝你的回復
是否賦值都沒有關系,只要定義了,程序運行就正常,否則就不正常。
回復

使用道具 舉報

20#
ID:410689 發(fā)表于 2020-3-11 17:31 | 只看該作者
依利達 發(fā)表于 2020-3-8 14:39
把部分代碼貼出來讓大家給你把把脈

你好,感謝你的回復
就是定義了這個變量就可以,沒有定義就不行,但是編譯都是零錯誤零警告。
回復

使用道具 舉報

21#
ID:410689 發(fā)表于 2020-3-11 17:31 | 只看該作者
殺死比亞 發(fā)表于 2020-3-8 17:47
把程序關掉重新打開程序,或者全局查找一下,看有沒有被用到的地方

你好,感謝你的回復
我試過了,還是不行,不知道是不是我的keil5不穩(wěn)定
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表