so true

          心懷未來,開創未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
          數據加載中……

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

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

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

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

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

          主站蜘蛛池模板: 澎湖县| 仁怀市| 海阳市| 罗江县| 潼南县| 临猗县| 常熟市| 久治县| 湘阴县| 清丰县| 安乡县| 深州市| 胶州市| 淳安县| 靖安县| 延津县| 库伦旗| 巴中市| 汶川县| 无锡市| 同心县| 轮台县| 张家界市| 唐河县| 图片| 沂水县| 常州市| 三穗县| 普陀区| 贵阳市| 大兴区| 镇远县| 淳安县| 武冈市| 崇礼县| 右玉县| 秦皇岛市| 盘锦市| 呼玛县| 鸡东县| 嘉善县|