某工程師接盤(pán)了前同事的項(xiàng)目,進(jìn)度一拖再拖。最后發(fā)現(xiàn)問(wèn)題出現(xiàn)在如下代碼:
請(qǐng)注意代碼中的“??/”,就是這注釋隱藏的很深,讓項(xiàng)目一拖再拖。
"??/"會(huì)被編譯器當(dāng)作 /,變成C語(yǔ)言的換行符(多行代碼連接符)。
于是這段代碼等同于// 注釋語(yǔ)句 a = b+c ;就會(huì)被注釋掉。
下面我們就是說(shuō)說(shuō)“??/”這種“三字母詞”的內(nèi)容。
什么是“三字母詞”
在ANSI標(biāo)準(zhǔn)中,定義了“三字母詞”,或者成為“三聯(lián)符序列”,英文為"trigraph sequences"。目的主要是為了在一些特定的字符集中,比如一些七位代碼集中,解決一些特定字符的輸入問(wèn)題。
也許是由于這些字符集我們基本上用不到,所以在大多數(shù)C語(yǔ)言的書(shū)籍中,我們都看不到對(duì)“三字母詞”的講解。這里資料來(lái)源于參考ANSI C99標(biāo)準(zhǔn)(即傳說(shuō)中的《American National Standards Institute for Programming Languages-C》 1999年,我們習(xí)慣簡(jiǎn)稱(chēng)為“C99”)。“三字母詞”主要有9個(gè),分別為:
源代碼中的“三字母詞”,在編譯階段會(huì)被替換為“對(duì)應(yīng)的字符”。對(duì)于以“?”開(kāi)頭的字符序列,如果不能與上面9個(gè)匹配,編譯器將保持原狀;一旦匹配,編譯器就會(huì)做替換。“三字母詞”例子例子1:C99標(biāo)準(zhǔn)中給出的例子
printf("Eh???/n");
相當(dāng)于:
printf("Eh/n");
例子2:一個(gè)我們?nèi)菀追傅腻e(cuò)誤(摘自《Pointers On C》)
printf("Delete file (are you really sure??):");
運(yùn)行結(jié)果為(三字母詞“??)”編譯時(shí)替換為“]”):
Delete file (are you really sure]:
而不是我們想象中的:
Delete file (are you really sure??):
最后
由于編譯器的種類(lèi)各樣,對(duì)ANSI C的支持也不一樣,所以可能會(huì)有些C語(yǔ)言編譯器不處理“三字母詞”,會(huì)將它們當(dāng)做普通的字符串來(lái)處理。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
原文標(biāo)題:接盤(pán)前同事項(xiàng)目,被字符“??/ ”坑慘
文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
相關(guān)推薦
`場(chǎng)效應(yīng)三極管的型號(hào)命名方法<br/> 現(xiàn)行有兩種命名方法。第一種命名方法與雙極型三極管相同,第三位字母J代表結(jié)型場(chǎng)效應(yīng)管,O代表絕緣柵場(chǎng)效應(yīng)管。第二位
發(fā)表于 04-25 15:42
`從型號(hào)區(qū)分 場(chǎng)效應(yīng)管型號(hào)如IRF......... 三極管型號(hào)如國(guó)產(chǎn):3DD,國(guó)外:2S......... 場(chǎng)效應(yīng)管有兩種命名方法。第一種命名方法與雙極型三極管,第三位字母J代表結(jié)型
發(fā)表于 07-11 11:41
Proteus 8*8數(shù)碼顯示管編譯26位字母和0-9數(shù)字代碼const int row1=2;const int row2=3;const int row3=4;const int row4=5
發(fā)表于 10-30 17:31
:“吃飯啦”;生僻字和零聲母字應(yīng)盡量避免,如“語(yǔ)音識(shí)別”中“語(yǔ)音”兩個(gè)字均為零聲母字;命令詞中的字
發(fā)表于 10-25 15:09
變壓器的類(lèi)別、結(jié)構(gòu)、特征和用途,后部分代表產(chǎn)品的額定容量和高壓繞組的額定電壓等級(jí),其型號(hào)中的字母所代表的含義如下: 第一位字母表示變壓器的類(lèi)別,O表示降壓自耦,D表示單相;S表示三相。 第二位
發(fā)表于 05-16 15:46
M0518用串口接收數(shù)據(jù)時(shí)出問(wèn)題。發(fā)送端共發(fā)送3個(gè)字節(jié),固定第一字節(jié)數(shù)據(jù)會(huì)改變,其它兩個(gè)字節(jié)的數(shù)據(jù)一直為0,可是接收端收到的數(shù)據(jù),第一個(gè)字節(jié)是正常的,后面的第二、三字節(jié)卻是亂的。本應(yīng)為0的,但是像
發(fā)表于 08-21 07:13
MCS51三字節(jié)無(wú)符號(hào)除法程序(ASM)
;三字節(jié)無(wú)符號(hào)除法程序(R2R3R4/R7)=(R2)R3R4 余數(shù)R7;入口 :R2,R3,R4,R7;占用資源:ACC,B,F0;堆
發(fā)表于 01-16 11:54
?1214次閱讀
三字節(jié)二進(jìn)制無(wú)符號(hào)數(shù)除以單字節(jié)二進(jìn)制數(shù)
入口條件:被除數(shù)在R3、R4、R5中,除數(shù)在R7中。出口信息:OV=0 時(shí),雙字節(jié)商在R4、R5中,OV=1
發(fā)表于 01-19 22:47
?1792次閱讀
場(chǎng)效應(yīng)三極管的型號(hào)命名方法及參數(shù)
現(xiàn)行有兩種命名方法。第一種命名方法與雙極型三極管相同,第三位字母J代表結(jié)型場(chǎng)效
發(fā)表于 11-09 15:30
?2425次閱讀
場(chǎng)效應(yīng)三極管的型號(hào)
場(chǎng)效應(yīng)三極管的型號(hào), 現(xiàn)行有兩種命名方法。其一是與雙極型三極管相同,第三位字母J代表結(jié)型場(chǎng)效應(yīng)管,O代表絕緣柵場(chǎng)效
發(fā)表于 11-09 15:57
?4756次閱讀
說(shuō)起對(duì)工業(yè)機(jī)器人的性能要求,無(wú)非就是“快、準(zhǔn)、狠”三字。其實(shí)這也就是對(duì)機(jī)器人關(guān)節(jié)伺服電機(jī)的要求,今天我們就來(lái)拆解一下這三字背后的含義。
發(fā)表于 10-24 15:17
?3904次閱讀
本文檔的主要內(nèi)容詳細(xì)介紹的是LCD1602字母流動(dòng)顯示C語(yǔ)言程序函數(shù)資料免費(fèi)下載。
發(fā)表于 12-24 08:00
?12次下載
—穿墻式;Z—支柱式;M—母線式;D—單匝貫穿式;V—結(jié)構(gòu)倒置式;J—零序接地檢測(cè)用;W—抗污穢;R—繞組裸露式 第三字母:Z—環(huán)氧樹(shù)脂澆注式;C—瓷絕緣;Q—?dú)怏w絕緣介質(zhì);W—與微機(jī)保護(hù)專(zhuān)用 第四字母:B—帶保護(hù)級(jí);C—差動(dòng)保護(hù);D—D級(jí);Q—加強(qiáng)型;J—加強(qiáng)型ZG 第
發(fā)表于 07-12 14:57
?1.3w次閱讀
編譯器當(dāng)作 /,變成C語(yǔ)言的換行符(多行代碼連接符)。于是這段代碼等同于// 注釋語(yǔ)句 a = b+c ;就會(huì)被注釋掉。 下面我們就是說(shuō)說(shuō)“??/”這種“三字母詞”的內(nèi)容。 什么是“三字母詞
發(fā)表于 09-26 14:46
?2595次閱讀
場(chǎng)效應(yīng)三極管管現(xiàn)行有兩種命名方法。第一種命名方法,型號(hào)的第三位字母J代表結(jié)型場(chǎng)效應(yīng)管,O代表絕緣柵場(chǎng)效應(yīng)管。第二位字母代表材料,D是P型硅,反型層是N溝道;C是N型硅P溝道。例如,3D
發(fā)表于 04-23 10:40
?1996次閱讀
評(píng)論