一:事情起因
事情的起因是這樣的:原來(lái)的產(chǎn)品已經(jīng)有比較成熟代碼,并且產(chǎn)品已經(jīng)批量??蛻籼岢隽诵碌墓δ芨膭?dòng),需要將其中一個(gè)端口的功能與另一個(gè)端口互換,原來(lái)做AI采集的端口用作開(kāi)關(guān)量采集,原來(lái)用作開(kāi)關(guān)量采集的端口用作AI采集。
這么小的代碼改動(dòng),想著讓新來(lái)的小伙子嘗試一下,就放心地讓他去改。2天后詢問(wèn)進(jìn)度,本來(lái)以為已經(jīng)完成的工作,竟然被告知代碼測(cè)試還有問(wèn)題。
抽出來(lái)時(shí)間跟他一起檢查了代碼。當(dāng)我看到下面的改動(dòng)之后,瞬間崩潰了。
原來(lái)的代碼是這樣的:
GPIO_InitTypeDefGPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(GPIOA, &GPIO_InitStructure);改動(dòng)后的代碼是這樣的:
GPIO_InitTypeDefGPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure);乍一看好像沒(méi)有什么問(wèn)題,將原來(lái)PA9的AI模式配置注釋掉,修改為上拉輸入模式,將原來(lái)AI10的上拉輸入模式修改為AI模式。
當(dāng)我將代碼用vscode打開(kāi)后,發(fā)現(xiàn)第204行與205行的顏色相同。如下圖:
原來(lái)是不小心在第204行最后輸入了一個(gè)“”,這個(gè)“”在C語(yǔ)言中是換行標(biāo)記,使用這個(gè)符號(hào)時(shí),就導(dǎo)致第205行其實(shí)是被注釋掉的。相當(dāng)于PA9的模式一直沒(méi)有設(shè)置成功。
當(dāng)我問(wèn)他為什么要在最后增加一個(gè)“”的時(shí)候,他說(shuō):“不知道,不過(guò)這個(gè)已經(jīng)被注釋了,也不影響??!”。
我的內(nèi)心在想,“你是C語(yǔ)言之父啊,你說(shuō)沒(méi)影響就沒(méi)影響了?”。不過(guò)作為導(dǎo)師,還是耐著性子給他講解了“”在C語(yǔ)言中的用法。
二:總結(jié)
在C語(yǔ)言程序編寫中,我們有時(shí)會(huì)遇到一行代碼太長(zhǎng)而影響閱讀或者出現(xiàn)與部分公司或組織要求的編碼規(guī)范不符的情況,此時(shí)我們需要將這行代碼分成多行來(lái)寫。
針對(duì)一般語(yǔ)句,我們使用結(jié)尾作為換行標(biāo)記。當(dāng)在編譯時(shí),后面的換行符將被忽略,當(dāng)做一行處理。
所以上面的語(yǔ)句:
//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;在編譯時(shí)的實(shí)際效果會(huì)這樣的:
//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;所以下面一行配置端口為“上拉輸入”模式的代碼其實(shí)是被注釋掉,不被編譯進(jìn)去的。
你也遇到過(guò)類似的問(wèn)題嗎?
審核編輯:劉清
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141823 -
GPIO
+關(guān)注
關(guān)注
16文章
1280瀏覽量
54128 -
vscode
+關(guān)注
關(guān)注
1文章
169瀏覽量
8518
原文標(biāo)題:讓新來(lái)的改一段C代碼,結(jié)果后差點(diǎn)氣死!
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
pic單片機(jī)io口控制教程之c語(yǔ)言編程實(shí)現(xiàn)


單機(jī)片技術(shù):Keil環(huán)境下C語(yǔ)言程序編寫及仿真#單片機(jī)
急!請(qǐng)問(wèn)C51與ISD4004的單片機(jī)C語(yǔ)言程序如何編寫!
C語(yǔ)言學(xué)習(xí)核心教程
如何用C51驅(qū)動(dòng)航模直流無(wú)刷電機(jī)?用C語(yǔ)言程序如何編寫?
單片機(jī):請(qǐng)問(wèn)這種題目如何用c語(yǔ)言程序編寫
C語(yǔ)言程序編寫問(wèn)題
嵌入式程序員常見(jiàn)的const、static、volatile關(guān)鍵字
PWM調(diào)速的C語(yǔ)言程序編寫
pwm調(diào)速原理c語(yǔ)言,pwm調(diào)速C語(yǔ)言程序編寫
單片機(jī)硬件知識(shí)介紹 基于單片機(jī)點(diǎn)亮LED燈

評(píng)論