- 高質(zhì)量程序設(shè)計(jì)指南:C++/C語(yǔ)言
- 林銳 韓永泉編著
- 568字
- 2019-01-09 14:08:59
4.4 標(biāo)識(shí)符
C++/C的標(biāo)識(shí)符是由字母、數(shù)字和下畫(huà)線(_)組成的字符序列,用來(lái)標(biāo)識(shí)一個(gè)程序元素,如變量、函數(shù)、宏、類型名等。標(biāo)識(shí)符可以任意長(zhǎng),但是標(biāo)準(zhǔn)C語(yǔ)言規(guī)定,編譯器只取前31個(gè)字符作為有效的標(biāo)識(shí)符,而標(biāo)準(zhǔn)C++則取前255個(gè)字符作為有效的標(biāo)識(shí)符。
每一個(gè)標(biāo)識(shí)符都具有如下的幾個(gè)屬性:值、值的類型、名字、存儲(chǔ)類型、作用域范圍、連接類型(可見(jiàn)性)、生存期等。例如,C函數(shù),函數(shù)名其實(shí)就是函數(shù)體代碼在內(nèi)存中的首地址,在編譯時(shí)就可以確定其值,因此是一個(gè)常量,這是它的值;值的類型就是函數(shù)指針類型;存儲(chǔ)類型默認(rèn)為extern,除非聲明為static;作用域范圍為文件作用域;連接類型默認(rèn)為外連接,除非聲明為static;生存期為永久(即靜態(tài))。其他的幾個(gè)屬性我們將在后面章節(jié)適當(dāng)?shù)牡胤皆敿?xì)介紹。
【提示4-9】: (1)避免使用前導(dǎo)“_”和“__”來(lái)定義你自己的標(biāo)識(shí)符,因?yàn)檎Z(yǔ)言及其實(shí)現(xiàn)使用它來(lái)定義一些內(nèi)部名稱或預(yù)定義的宏,因此如果你也使用它,就有可能造成命名沖突。
(2)給標(biāo)識(shí)符起一個(gè)有意義的名字,要能夠“顧名思義”。如果是變量,最好能體現(xiàn)出它的值的類型(如使用類型名縮寫(xiě)作為前綴)。這樣的標(biāo)識(shí)符具有“自說(shuō)明”能力,具體參見(jiàn)本書(shū)第11章。
(3)使用長(zhǎng)的標(biāo)識(shí)符名字并不會(huì)增大可執(zhí)行代碼的體積,因此不要使用過(guò)于簡(jiǎn)單的名字,但也不要使用過(guò)長(zhǎng)的名字。標(biāo)識(shí)符名字的長(zhǎng)度應(yīng)該遵循“用最短的名字包含最多的信息量”的原則。
- Python快樂(lè)編程:人工智能深度學(xué)習(xí)基礎(chǔ)
- 數(shù)據(jù)庫(kù)系統(tǒng)原理及MySQL應(yīng)用教程
- Building a Quadcopter with Arduino
- 深入理解Elasticsearch(原書(shū)第3版)
- Multithreading in C# 5.0 Cookbook
- SciPy Recipes
- 大學(xué)計(jì)算機(jī)基礎(chǔ)
- Python自然語(yǔ)言理解:自然語(yǔ)言理解系統(tǒng)開(kāi)發(fā)與應(yīng)用實(shí)戰(zhàn)
- Mastering Elixir
- Android Game Programming by Example
- Node.js從入門(mén)到精通
- Continuous Delivery and DevOps:A Quickstart Guide Second Edition
- Java 9 with JShell
- SQL Server on Linux
- C++17 By Example