C語言名字空間究竟是什么?
防止名字沖突。沒有名字空間的舊時代里,大家的名字都在一個鍋里面,各個項目之間起名字都得自己注意這點,張三弄了個棒槌得自己注意取名叫張三_棒槌,李四弄了個棒槌叫李四_棒槌,不然張三李四倆人一人一個棒槌就會發(fā)生名字沖突,這倆項目就沒法編譯到一起了。當(dāng)然,有很多人根本不介意這套,另外也有人想要重新使用一些別的依賴庫甚至標(biāo)準(zhǔn)庫已經(jīng)用掉的名字,沒有名字空間這個都做不到。
名字空間就是解決這個問題的。在C++里標(biāo)準(zhǔn)庫的所有名字都在std下,同時除非你想被噴死否則一個像話的項目肯定也要把自己的所有名字放到項目的名字空間下,張三::棒槌、李四::棒槌、std::棒槌,都碰不到一起去,名字碰撞的問題就減輕了很多。當(dāng)然更徹底的方式是java式的域名反序做包名,還可以避免兩個項目想用同一個項目名/包名又導(dǎo)致沖突的問題,不過實際應(yīng)用中有名字空間加上理性的代碼風(fēng)格基本還是可以解決問題的。
上一篇是不是可以直接入職了