so true

          心懷未來,開創(chuàng)未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
          數(shù)據(jù)加載中……

          在函數(shù)中定義static變量時(shí)需要注意的問題

          對于在頭文件中定義(不能只聲明)static的函數(shù) 或者 static的類成員函數(shù),需要注意的是,如果這個(gè)頭文件被不同的cpp包含,各自編譯出.o文件,那么*有可能*最后鏈接出來的可執(zhí)行文件種,會(huì)存在該static函數(shù)的多個(gè)副本,有三種情況會(huì)導(dǎo)致這樣的事情發(fā)生,而如果你在這種函數(shù)里面放置了static變量,那就悲催了,因?yàn)檫@個(gè)static對象會(huì)被搞出多個(gè)來(不再如你所愿,全局唯一了):
          1。頭文件中定義了static函數(shù);
          2。頭文件中定義了匿名namespace下的函數(shù);
          3。頭文件中定義了匿名namespace下的類成員函數(shù);

          所以,法門就是:不要在匿名的namespace下定義類,對于函數(shù)而言,用static聲明和放在匿名的namespace下是等同的。

          對于在函數(shù)內(nèi)部聲明的static變量,編譯器默認(rèn)是會(huì)使得這樣的static變量在初始化時(shí)是線程安全的,控制它的選項(xiàng)是-fno-threadsafe-statics

          posted on 2012-06-07 11:55 so true 閱讀(1266) 評論(0)  編輯  收藏 所屬分類: C&C++

          主站蜘蛛池模板: 伊宁市| 泗洪县| 湘潭县| 内黄县| 米脂县| 健康| 南投县| 噶尔县| 竹溪县| 自贡市| 福建省| 平凉市| 开平市| 长泰县| 瑞丽市| 罗定市| 霸州市| 寿光市| 隆德县| 德清县| 米林县| 九江县| 高雄市| 伊金霍洛旗| 栾城县| 景洪市| 台中县| 五常市| 江山市| 鲁山县| 博爱县| 白朗县| 阳江市| 自治县| 平昌县| 莒南县| 镇赉县| 民乐县| 泰和县| 庐江县| 隆尧县|