wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標題: 解決一個C語言程序分號“;”引起的bug [打印本頁]

作者: f556    時間: 2022-9-13 23:45
標題: 解決一個C語言程序分號“;”引起的bug
曾想也標題黨一次,寫成《一個C程序分號“;”引起的血案》,筆者原本厭惡標題黨,厭惡那些“xxxx了”、“XXXX震驚,不看后悔”、“XXXX,看這個就夠了”。也就不在此惡心各位同好。
C程序的分號,是任何寫過C程序的人都明白的,很重要,用的很多。但此文將要說明的是分號不正確的使用,導致一個隱藏的Bug。

一、發現錯誤
家用的太陽能熱水器控制,執行電加熱后,本來有一個LED燈閃爍,提示電加熱是開啟的。原來用了兩年多,一直正常,前幾天發現是啟動電加熱后,閃一次LED就熄滅。全套控制、接線都是自己一點點搞起來的,所以要解決這個故障,有了優勢,但更有了苦命累積。一個同事二貨在別墅頂上裝了太陽能熱水器,為了陰天有熱水,另外加了一個電熱水器,還要考慮閥門切換,考慮電熱水器防雨、考慮啟動或關閉總電源等等,反正一切由安裝的說了算,不用費腦子。想想我布的多根網線、多點測溫、兩組太能能占據掉的位置,自己在斜的瓦屋頂上熔水管、焊接線,那么多辛苦都過去了,借肋中秋節放假而且一直下雨在家的時間,有必要把LED不指示的問題解決。

二、查找問題
記得LED指示燈與電加熱分別各用一個IO口,也必須如此,才可以閃爍,不然加熱時變成繼電器反復通斷。LED用9012PNP管驅動,且平時一直會微閃,這個一開始就如此,胡亂微閃就閃吧,大概分析了一下,如果用NPN管不會微閃,PNP如果調偏置電阻也可以使全滅,涉及小小的三極管復雜的功能,在此不跑主題,也不細說。
未連接系統,隨意看了一下程序,程序應該沒有動過,上月寫兩個發明專利時,為了測試幾個數據,重新下載過一套改版的程序到Flash,后又恢復了。原因可能是在什么時候動過程序,導致出現Bug。程序看不出明顯的錯誤,必須聯機調試,監視一下變量。
真是累不動。還好SBW下載線制作過一根專用的,直接插上就OK,不用其它排列順序的下載線換線位。搜索全部工程文件“電加熱” “電熱”,找到以下語句:
#define EHeat_off   P7OUT |=  BIT0; EHisON=0  //電加熱off
#define EHeat_on    P7OUT &=~ BIT0; EHisON=1  //電加熱on
聚焦到EHeat_off語句,再搜EHeat_off,只有3處有過:
1、              BASICTIMER_VECTOR定時器中斷250ms一次,快結束時啟動一次測溫,在測溫程序中,結果出來后,用了以下:
  /*-----------停止電加熱-----------*/
if(UperT > EleHeatTempe*10)  EHeat_off;     //達到設置溫度(45.0---450),關閉電加熱。
2、              第二處是狀態機控制的菜單程序中,當Cancel時,關閉電加熱:
if(Menu_sel==3)   EHeat_off;
另外一處就是define處的定義了。

三、解決問題
程序高手估計已經發現問題了,筆者愚鈍。啟動電加熱后,中斷并監視P7口,P70確實是0,剛好這兩周,家里主空開被我拆了調整空開位準備在家門口接充電樁,用鉗表卡16平總進戶線電流5A多,關閉電加熱時0.3A。證明加熱正常。僅僅是指示燈出故障。再搜索全部工程,除了3處定義,只在__interrupt void BT_ISR(void)中出現過:
if(  EHisON) P4OUT ^=  BIT2;      //電加熱指示燈閃
else  if((P4IN & BIT2) ==0 )   P4OUT |=  BIT2;
程序前強加一個EHisON=1; 指示燈會閃。說明PNP管、LED均正常。EHisON是一個標志電加熱是打開狀態的變量,原意是開關電熱時,一并切換此標志是開或關。監視此變量總是為0。
回到if(UperT > EleHeatTempe*10)  EHeat_off;終于發現問題。這個語句相當于:
if(UperT > EleHeatTempe*10)  P7OUT |=  BIT0; EHisON=0;
很明顯,if執行了“P7OUT |=  BIT0;”,而“EHisON=0;”不論if如何都會執行,解決辦法自然是加{}。當然還有另一個解決辦法,不用加{},看大家的興趣,我在后邊回復中說明。

我一般寫define時,習慣是最后不加“;”而在執行代碼中加,這樣看上去比較統一。此次定義是P7OUT |=  BIT0和EHisON=0兩個語句,故在中間順手加了一個“;”。又一個習慣是簡單的if喜歡一行寫完,不加{}。甚至長一點的if都喜歡一行寫完,以讓小小的屏幕好容納上萬行代碼。各種習慣、巧合,導至這個Bug正常運行了2年時間。今天回頭找最老版的程序查看,這個錯誤一直在,不明白為什么原來可以正常閃爍,難道編譯器根據option設置修正過此錯誤?如果有明白的大神,請不吝賜教,先謝謝了。主控是MSP430F4152,但IDE我不說了(IXX6),涉及其它不必要的麻煩。
另外,我不喜歡那些上傳整套程序的,一般也無心看,除非是自己手上有的小模塊,而又沒有玩過的,針對此模塊的驅動可以看看。也更喜歡關注思路、方法、原理。所以也不上傳整套程序,畢竟各種場合的應用不一樣、解決方案各不同,拙作也就不傷大家眼了。

作者: wangnengjie    時間: 2022-9-14 12:56
學C語言的經典 坑了。
作者: heicad    時間: 2022-9-15 20:53
對初學者很有用,當年好像遇到過這情況
作者: wujian122656    時間: 2022-9-27 16:29
弄了個開發板,準備開始學單片機啦,加油
作者: imxuheng    時間: 2022-10-9 09:30
別提了,我也有你提到的編程壞習慣,語句寫成一行,又不加{},開始時死活找不出bug,以后真的要注意了
作者: DoneDone    時間: 2022-10-11 07:20
后面你一定會養成if的內容加花括號的習慣的
作者: zzzzz8840    時間: 2022-10-16 17:31
{}太重要了,被坑過
作者: nanjingcxy2008    時間: 2022-10-28 10:10
受教了,給大家也提了個醒,以后會注意這個問題,養成良好的編程習慣。
作者: ggbob    時間: 2022-11-7 15:30
確實細節很重要

作者: Longan.Wang    時間: 2022-11-11 14:29
這個根本就不是";"號的號題!!!!
在定義多條語句宏的時候,至少需要用{}把語句框起來!
#define EHeat_off   {P7OUT |=  BIT0; EHisON=0;}  //電加熱off
#define EHeat_on    {P7OUT &=~ BIT0; EHisON=1;}  //電加熱on
如果想更加保險一點應用下面格式寫更好
//電加熱off
#define EHeat_off   do {P7OUT |=  BIT0; EHisON=0;} while(0);
//電加熱on
#define EHeat_on   do {P7OUT &=~ BIT0; EHisON=1;} while(0);
為什么這樣寫,網上有大佬分析過。



作者: Angle145    時間: 2022-11-11 23:58
使用宏替換多行代碼時,在調用養成加大括號后再調用的習慣
作者: Angle145    時間: 2022-11-11 23:59
Longan.Wang 發表于 2022-11-11 14:29
這個根本就不是";"號的號題!!!!
在定義多條語句宏的時候,至少需要用{}把語句框起來!
#define EHea ...

對的,用do來概括多行宏,根本不是分號問題,給你一個贊
作者: f556    時間: 2022-11-12 01:19
Longan.Wang 發表于 2022-11-11 14:29
這個根本就不是";"號的號題!!!!
在定義多條語句宏的時候,至少需要用{}把語句框起來!
#define EHea ...

感謝回復,我的解決辦法就是這樣:
#define EHeat_off   {P7OUT |=  BIT0; EHisON=0;}  //電加熱off
#define EHeat_on    {P7OUT &=~ BIT0; EHisON=1;}  //電加熱on
用do while應該有它的好處,大佬畢竟是大佬。
基于現在屏幕大部分時候是橫向的,特別是對于我用筆記本來說。更喜歡把一件事寫在一行,好象看著更簡潔,好比:
unsigned char aa,bb,cc;
至于"定義多條語句宏的時候,至少需要用{}把語句框起來",這有點絕對了。
實際上:
#define EHeat_off    P7OUT |=   BIT0 ,EHisON=0     //電加熱off
#define EHeat_on    P7OUT &=~ BIT0, EHisON=1  //電加熱on
上邊語句完全可以實現功能,且最后是沒有分號的,以方便按習慣在調用時后邊再加分號,如:
if(...)  EHeat_off;
上邊實際上是“,”的用法,好比在寫if時為節約行數,if后同時要做的事一并寫了,不用{}。
如:if(a>b) c=a,a=b,b=c;    //交換順序
畢竟是業余玩,不是按代碼行數拿薪水,我個人更喜歡上邊這種寫法,當然,壞處是出現了我本主題的毛病,另外也不排除在上邊if中隨手把“,”寫成分號導致隱藏的錯誤。
作者: wufa1986    時間: 2022-11-12 08:31
一般不是數值的話,我都是搞成函數的形式,而不是#define
作者: SURUBU1976    時間: 2022-11-15 15:56
Longan.Wang 發表于 2022-11-11 14:29
這個根本就不是";"號的號題!!!!
在定義多條語句宏的時候,至少需要用{}把語句框起來!
#define EHea ...

為什么這樣寫,網上有大佬分析過   請給連接想學下。謝謝
作者: 程卓    時間: 2022-11-27 20:37
B站上有c 語言學習視頻
作者: 明記冷氣    時間: 2023-1-11 22:17
語句短我一般加,號不用{}
作者: f556    時間: 2023-2-15 22:44
明記冷氣 發表于 2023-1-11 22:17
語句短我一般加,號不用{}

謝謝,還是找到一個知音了。
作者: 快樂眼淚    時間: 2023-4-11 20:20
以后學C語要細心了!
作者: Afterwards_1    時間: 2023-4-24 21:00
答主講的非常仔細
作者: Ubuntu312    時間: 2024-8-3 13:42
好多次了,IFELSE后跟一條語句,不加{};后來客戶提要求,加了之后出BUG,頭疼了半個多鐘頭
作者: zhangdong533    時間: 2025-4-4 01:33
哈哈,很有意思啊
作者: zyftank    時間: 2025-5-22 15:11
那個分號可以用逗號替代,就不用加花括號了




歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
黄色亚洲免费| 亚洲一区中文字幕在线| 中文字幕电影一区| av色在线观看| 亚洲午夜福利在线观看| 国产精品手机播放| 国产精品一区二区av日韩在线| 日日爱夜夜操| 欧美多人猛交狂配| 国产精品美女诱惑| 欧美无人高清视频在线观看| 欧美性色综合| 日本成人网址| 国产 欧美 精品| 污污的网站18| 国产成人a亚洲精品| 亚洲一区二区高清| 国产精品久久占久久| 成人在线观看网站| 神马午夜在线观看| 久久久久亚洲AV成人网人人小说| 国产精品直播网红| 亚洲欧美日本精品| 中文字幕二三区不卡| 久久精品人人| 手机看片久久| 很黄很色网站| 日本三级免费看| 国产自产在线视频| 97精品国产97久久久久久春色| 亚洲欧美综合色| 天天综合一区| 免费观看性欧美大片无片| 天天干夜夜操| 中文字幕在线观看免费| 国产传媒免费观看| 精品无码久久久久久久动漫| 一本色道久久综合狠狠躁篇的优点 | 琪琪五月天综合婷婷| 日韩中文字幕免费观看| 国产激情在线免费观看| 波多结衣在线观看| 国产精品69久久久| 久久综合九色综合久99| 中文字幕视频一区二区在线有码| 国产精品国产三级国产有无不卡 | 日韩一区二区三区视频在线| 国产精品123区| 天堂在线精品| 久久黄色美女电影| 国产在线视精品麻豆| 欧美成人综合色| 一女被多男玩喷潮视频| 国产美女被下药99| 欧美激情精品久久久久久变态| 午夜电影一区二区| 久久er精品视频| 精品三级av在线导航| 黄色免费在线播放| 国产1区二区| 亚洲午夜激情视频| 国产黄色片视频| 国产精品久久久久久久av福利| 欧美日韩激情四射| 91九色视频在线| 亚洲最新av在线网站| 天天av天天翘天天综合网色鬼国产| 久久精品999| 青青草综合网| ww久久综合久中文字幕| 亚洲一区在线日韩在线深爱| 五月婷婷丁香网| 男人在线观看视频| 国产无遮挡猛进猛出免费软件| 日韩三级电影免费观看| 国产精品入口免费视| 欧美怡春院一区二区三区| 亚洲成人动漫在线播放| 国产精品欧美精品| 国产在线看一区| 久久人人88| 亚洲视频资源| 黄色在线视频网站| 日本a级在线| 最新四虎影在线在永久观看www| 热re66久久精品国产99热| 久久久久久不卡| 一本色道久久综合亚洲精品图片 | 成人免费va视频| 一区二区三区四区五区精品视频| 加勒比久久高清| 国产香蕉精品| 国产一区二区三区四区五区3d | 国产一区二区视频在线免费观看| 日本不卡视频在线播放| 日韩在线不卡视频| 日韩亚洲国产中文字幕欧美| 日韩一区二区影院| 日韩精品久久久久| 91精品国产91久久综合桃花 | 全国男人的天堂天堂网| 91久久精品无码一区二区| 亚洲波多野结衣| 日韩少妇一区二区| www,av在线| 一本久道综合色婷婷五月| 影音欧美亚洲| 精品视频在线观看| 亚洲最新在线| 神马影院午夜我不卡| 91视频免费进入| 国产精品久久久久久久久久尿 | 88xx成人免费观看视频库| 精精国产xxxx视频在线| 123区在线| 国产精品18| 欧美激情啪啪| 国产三级在线观看视频| 国产精品视频一区二区三| 星空大象在线观看免费播放| 一区二区三区视频播放| 大地资源中文在线观看免费版| 黑人巨大精品欧美一区二区奶水 | 在线播放日韩欧美| 久久久久久久爱| 精品国产一区二区三区久久狼黑人| 欧美激情乱人伦一区| 亚洲一区国产精品| 成人黄色生活片| 国产精品欧美亚洲777777| 久久伊人资源站| 毛片av免费在线观看| 黄色片视频免费观看| 国产成人无码一区二区在线观看| 国产69视频在线观看| 少妇人妻丰满做爰xxx| 亚洲最大成人在线视频| 国产丝袜控视频在线观看| 三上悠亚在线观看| 酒色婷婷桃色成人免费av网| 男女网站在线观看| 天天摸夜夜添狠狠添婷婷| 99久免费精品视频在线观78| 在线观看免费毛片| 91超碰碰碰碰久久久久久综合| 超碰在线视屏| 丝袜美腿一区| 国产国产精品| 不卡的av电影在线观看| 久久蜜桃香蕉精品一区二区三区| 99久久国产免费看| 欧美精彩视频一区二区三区| 综合欧美一区二区三区| 6080午夜不卡| 亚洲色图激情小说| 欧美精品免费播放| 欧美在线一级va免费观看| 日韩中文一区| 国产情侣久久久久aⅴ免费| www.国产毛片| 天堂免费视频| 日皮视频在线观看| 成人国产激情在线| 欧美久久视频| 中文字幕一区二区三区蜜月| 亚洲精品美女在线| 99九九视频| 手机成人av在线| 人妻有码中文字幕| 亚洲一级Av无码毛片久久精品| 国产性生活视频| 狠狠鲁男人天堂| 国产最新视频在线观看| 亚洲精品**不卡在线播he| 国产视频久久| 久久综合九色综合欧美亚洲| 欧美一级片在线观看| 国产精品久久久久久网站| 777精品久无码人妻蜜桃| 国产精品成人aaaa在线| 狠狠色噜噜狠狠狠8888米奇| 成人免费看黄| 婷婷丁香综合| 人人爱人人干婷婷丁香亚洲| 欧美成人午夜| 成人av在线资源网站| 欧美一区二区三区思思人| 91美女片黄在线观看游戏| 91网址在线观看精品| 国产女同91疯狂高潮互磨| 三级国产在线观看| 99欧美精品| 麻豆国产欧美日韩综合精品二区 | 亚洲精品不卡| 中文字幕在线观看视频www| 黄色一级片中国| 国产免费大片| 欧美亚洲大片| 国产精品一区二区三区网站| 精品欧美国产一区二区三区| 91av在线影院| 久操手机在线视频| av网站免费在线看| 国产视频www| 污香蕉视频在线观看| 欧美一级免费| 国产寡妇亲子伦一区二区| 精品一区二区三区三区| 91老司机在线| xfplay5566色资源网站| 亚洲在线偷拍自拍| 在线免费福利| 手机亚洲手机国产手机日韩| 成人在线tv视频| 久久婷婷亚洲| 性久久久久久久久久久久| 国产精品第一页在线| 日本人妻一区二区三区| 中文字幕+乱码+中文字幕明步| 最新在线地址| 中文字幕亚洲综合久久五月天色无吗''| 99精品视频一区二区三区| 日韩在线免费视频观看| 精品一区在线播放| 中文字幕第69页| 91麻豆一区二区| 在线激情免费视频| 精品视频97| 久久久综合网站| 欧美黄色www| 黄页网站在线看| 国产不卡精品一区二区三区| 欧美影院精品| 伊人性伊人情综合网| 俺去亚洲欧洲欧美日韩| 国产三区在线视频| 色婷婷激情五月| 日韩电影网站| 久久麻豆一区二区| 国产精品第一视频| 欧美午夜激情影院| 国产人成免费视频| 精品国产一区二区三区性色av| 国产精品二三区| 91老司机精品视频| 免费在线视频观看| 日日操天天摸| 91九色精品国产一区二区| 91麻豆精品国产91久久久更新时间| 亚洲国产精品一区二区第一页| 国产一区二区视频免费观看| 日韩电影免费看| 久久99国产精品久久99| 久久韩国免费视频| 337p粉嫩大胆噜噜噜鲁| 中文人妻熟女乱又乱精品| 午夜dj在线观看高清视频完整版| 国产成人午夜电影网| 欧洲成人在线视频| 在线日韩国产网站| 男操女在线观看| 国内精品不卡在线| 亚洲最新av在线| 午夜xxxxx| 九色丨porny丨| 免费短视频成人日韩| 亚洲日本欧美天堂| 欧美一级淫片丝袜脚交| 懂色av粉嫩av浪潮av| 天堂成人在线| 国产成人久久精品77777最新版本| 欧洲美女7788成人免费视频| 极品久久久久久| av网站免费在线观看| 日本不卡高清视频| 亚洲欧美日韩综合| 在线视频日韩欧美| 久久久久久77777| 日本怡春院一区二区| 91国内产香蕉| 欧美丰满艳妇bbwbbw| 蜜桃成人365av| 国产乱国产乱300精品| 日韩男女性生活视频| av网站有哪些| 天堂av在线免费观看| 国产成人亚洲综合a∨猫咪| 国产91精品网站| 欧美一级视频免费观看| 黄上黄在线观看| 波多野结衣精品在线| 91精品国产综合久久久久久丝袜| 无码人妻一区二区三区免费| 精品乱码一区二区三区四区| 欧美性猛交xxxxxxxx| 浓精h攵女乱爱av| 免费特级黄毛片| 国产精品99一区二区| 久久久精品一区二区| 国产精品一区二区亚洲| 女同视频在线观看| 亚洲18色成人| 国产偷人视频免费| 好吊妞这里只有精品| 顶级嫩模精品视频在线看| 5566日本婷婷色中文字幕97| 日韩精品一区二区在线播放| 91福利精品在线观看| 欧美日免费三级在线| a级黄色片免费| 高清wwwwxxxx| 国产一区二区视频在线播放| 91免费观看网站| 免费观看成年人视频| 日韩免费久久| 国产丝袜一区二区三区| 国产美女精品久久| 蜜臀av在线| 欧美日韩中字一区| 国产51自产区| 黄色网在线免费观看| 亚洲欧洲另类国产综合| 欧美狂野激情性xxxx在线观| 国产九一视频| 国产午夜精品一区二区三区视频| 91久久极品少妇xxxxⅹ软件| 亚洲国产成人在线观看| 国产精品视频一区视频二区 | 一区二区三区四区五区视频| 91.www| 综合在线视频| 国产精品jvid在线观看蜜臀| 国产精品亚洲欧美在线播放| 国产精品一区二区三区www| 亚洲国产日韩精品在线| 中文字幕 欧美日韩| 国产小视频免费在线观看| 一区二区理论电影在线观看| 老司机午夜免费福利视频| 国产欧美日本亚洲精品一4区| 男女精品网站| 久久久久久久久爱| 国产成人av免费| 精品一区91| 中文字幕日韩欧美精品在线观看| 日本熟妇成熟毛茸茸| 韩国精品福利一区二区三区| 欧美精品亚州精品| 国产又大又黑又粗| 一区二区三区网站| 国产在线999| 97视频免费在线| 雨宫琴音一区二区在线| 69av在线视频| 神马一区二区三区| 日韩av午夜在线观看| 国产精品黄色av| 天堂精品高清1区2区3区| 国产真实乱偷精品视频免| 欧洲xxxxx| 九九三级毛片| 蜜臀久久99精品久久久画质超高清 | 国产精品少妇在线视频| 97在线观看免费观看高清| 色噜噜夜夜夜综合网| 国产亚洲精品美女久久久| 久久综合加勒比| 色综合视频一区二区三区日韩| 欧美精品自拍偷拍动漫精品| 天天久久综合网| 日韩激情电影| 中文字幕精品网| 亚洲成熟女性毛茸茸| 看片的网站亚洲| 久久国产精品视频在线观看| 久久久久久五月天久久久久久久久| 亚洲一区二区av电影| 极品人妻一区二区三区| 在线视频亚洲欧美中文| 国产成人精品久久久| 在线a视频网站| 亚洲色图视频网| 久久精品—区二区三区舞蹈| 日韩精品福利一区二区三区| 成人免费网站在线| 四虎永久在线高清国产精品| www久久久久| 久久黄色片视频| 在线观看av免费| 69p69国产精品| 日本va欧美va国产激情| 黄色欧美日韩| 精品一区二区成人免费视频 | 国产日韩二区| 丁香花高清电影在线观看完整版| 国产精品久久三区| 精品人妻伦一二三区久| 久久人人爽人人爽人人片av不| 国产日韩在线观看av| 成人免费观看www在线|