C语言中变量的链接属性
當(dāng)組成一個(gè)程序的各個(gè)源文件分別被編譯之后,所有的目標(biāo)文件以及那些從一個(gè)或多個(gè)函數(shù)庫(kù)中引用的函數(shù)鏈接在一起,形成可執(zhí)行程序。如果相同的標(biāo)識(shí)符出現(xiàn)在幾個(gè)不同的源文件中時(shí),它們是表示同一個(gè)變量還是不同的變量呢?這個(gè)就取決于標(biāo)識(shí)符的鏈接屬性(linkage)。要注意的是,標(biāo)識(shí)符的作用域與鏈接屬性有關(guān),但這兩個(gè)屬性不相同。?鏈接屬性一共有3種:?
| none | 沒有鏈接屬性的標(biāo)識(shí)符(none)總是被當(dāng)作單獨(dú)的個(gè)體,也就是說(shuō)該標(biāo)識(shí)符的多個(gè)聲明被當(dāng)作獨(dú)立不同的實(shí)體。? |
| internal | 屬于internal鏈接屬性的標(biāo)識(shí)符在同一個(gè)源文件內(nèi)的所有聲明中指同一個(gè)實(shí)體,但位于不同源文件的多個(gè)聲明則屬于不同的實(shí)體。使用static關(guān)鍵字來(lái)聲明一個(gè)internal類型的標(biāo)識(shí)符。static只對(duì)缺省鏈接屬性為external的聲明才有改變鏈接屬性的效果。static用于聲明局部變量時(shí),是使這個(gè)變量成為靜態(tài)變量,就是這個(gè)變量在程序的整個(gè)運(yùn)行過程中總是存在的,直到程序結(jié)束。? |
| external | 屬于external鏈接屬性的標(biāo)識(shí)符無(wú)論聲明多少次、位于幾個(gè)源文件都表示同一個(gè)實(shí)體。當(dāng)extern關(guān)鍵字用于源文件中一個(gè)標(biāo)識(shí)符的第1次聲明時(shí),它指定該標(biāo)識(shí)符具有external鏈接屬性。但是,如果它用于該標(biāo)識(shí)符的第2次或以后的聲明時(shí),它并不會(huì)更改由第1次聲明所指定的鏈接屬性。 |
轉(zhuǎn)載于:https://my.oschina.net/liangzhenghui/blog/112636
總結(jié)
以上是生活随笔為你收集整理的C语言中变量的链接属性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pcb结构链表_lwip中tcp_pcb
- 下一篇: 输出形状