|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
一直不太明白,C中防止重復(fù)定義時(shí)非要加下劃線干嘛? |
| 作者:風(fēng)... 欄目:單片機(jī) |
譬如: #ifndef _UARTH_ #define _UARTH_ #endif 納悶,可否指點(diǎn)一下? |
| 2樓: | >>參與討論 |
| 作者: szyzm 于 2006/4/20 18:30:00 發(fā)布:
我也不明白!! |
|
| 3樓: | >>參與討論 |
| 作者: 綠陰深處 于 2006/4/20 19:50:00 發(fā)布:
你不加也可以 沒什么強(qiáng)制要求。 之所以很多地方(特別是系統(tǒng)定義的)加下劃線,我想是一種習(xí)慣,為了和普通變量和定義區(qū)分。 |
|
| 4樓: | >>參與討論 |
| 作者: 滌綸 于 2006/4/20 20:25:00 發(fā)布:
回復(fù) 用是這么用了,為什么也不知道,不會(huì)這么多人都有這習(xí)慣,還等高人指點(diǎn)一下吧。 |
|
| 5樓: | >>參與討論 |
| 作者: IceAge 于 2006/4/20 21:08:00 發(fā)布:
加下劃線是為了防止重復(fù)定義 :-) 因?yàn)榇蠖鄶?shù)名稱沒有下劃線, 這樣可以避免名稱沖突,也便于識(shí)別。 |
|
| 6樓: | >>參與討論 |
| 作者: 奔騰的心 于 2006/4/20 21:51:00 發(fā)布:
就是個(gè)好習(xí)慣,無他 |
|
| 7樓: | >>參與討論 |
| 作者: 風(fēng)... 于 2006/4/21 9:00:00 發(fā)布:
可是: 以下這一段是在文件名為uart.h的文件里的, #ifndef _UARTH_ #define _UARTH_ #endif 有的也用“#ifndef UART_H”的,反正有很多變種,好像似乎為了躲避文件名中的點(diǎn)“.”,而且_UARTH_、UART_H等,與其文件名緊密相連的。 納悶…… 唉,我一直以為這是一個(gè)弱智問題呢^_^ |
|
| 8樓: | >>參與討論 |
| 作者: computer00 于 2006/4/21 9:05:00 發(fā)布:
我一般用兩個(gè)下劃線,例如#define __UART_H__ 這樣在取名字時(shí),一般都不用顧忌它是否已經(jīng)被用了。 因?yàn)樽兞亢苌偃∵@么奇怪的名字。 |
|
| 9樓: | >>參與討論 |
| 作者: AIRWILL 于 2006/4/21 9:16:00 發(fā)布:
不過,一旦起名成了習(xí)慣 這怪名也就不怪啦,沖突也會(huì)難免啦 也許這就說編程語言的缺陷啦 |
|
| 10樓: | >>參與討論 |
| 作者: xwj 于 2006/4/21 9:38:00 發(fā)布:
就是作為特殊標(biāo)識(shí),和普通的定義區(qū)分開,防止重名 譬如: #ifndef _UARTH_ //如果沒有定義 #define _UARTH_ //那么定義標(biāo)志 //下面跟著一堆正常的定義 #endif //結(jié)束這個(gè)if[/#] 因?yàn)楹芏囝^文件可能被多個(gè)文件包含,很多時(shí)候會(huì)出現(xiàn)重復(fù)定義的錯(cuò)誤 而采用這種寫法時(shí),當(dāng)重復(fù)包含這個(gè)文件時(shí),第一次編譯到#ifndef _UARTH_時(shí)條件滿足,if里面的宏定義執(zhí)行一次, 再次編譯到#ifndef _UARTH_時(shí)條件不滿足,if里面的宏定義就不會(huì)再執(zhí)行了,也就不會(huì)出現(xiàn)重復(fù)定義的錯(cuò)誤了 |
|
| 11樓: | >>參與討論 |
| 作者: 風(fēng)... 于 2006/4/21 10:59:00 發(fā)布:
非常感謝樓上各位大師,小生有禮了 也就是說,這只是一個(gè)習(xí)慣,而實(shí)際上用什么都行?是吧? 唉,我一直在想,這個(gè)奇怪的命名與其文件名有什么關(guān)系呢! 再次感謝大家的指點(diǎn),開始有些醒悟了^_^ |
|
| 12樓: | >>參與討論 |
| 作者: meng730507 于 2006/4/21 11:20:00 發(fā)布:
這只是一個(gè)命名規(guī)則 當(dāng)然,如果你有更好的方法,也可以不用這個(gè)規(guī)則. |
|
| 13樓: | >>參與討論 |
| 作者: computer00 于 2006/4/21 12:53:00 發(fā)布:
樓主來看看這個(gè)日志: http://blog.21ic.com/more.asp?NAME=computer00&id=11021 |
|
| 14樓: | >>參與討論 |
| 作者: 風(fēng)... 于 2006/4/24 9:48:00 發(fā)布:
非常感謝樓上各位高手的指點(diǎn),非常感謝! 一定再仔細(xì)看看! 謝謝啦! |
|
| 15樓: | >>參與討論 |
| 作者: fushaobing 于 2006/4/25 8:32:00 發(fā)布:
我也不明白 那為什么包含的時(shí)候文件名是“UART_H”而不是“__UART_H__”呢? |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |