so true

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

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

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

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

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

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

          主站蜘蛛池模板: 龙陵县| 陵水| 张北县| 陈巴尔虎旗| 焦作市| 镇原县| 平谷区| 和顺县| 扎赉特旗| 江油市| 比如县| 潼南县| 喀什市| 棋牌| 玛多县| 安多县| 五华县| 昌乐县| 高邑县| 康马县| 连江县| 军事| 富平县| 睢宁县| 舟曲县| 宜城市| 柯坪县| 嘉定区| 洪江市| 略阳县| 临汾市| 静安区| 邵阳县| 镇坪县| 阿图什市| 临西县| 应用必备| 河北省| 城固县| 若尔盖县| 思茅市|