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 閱讀(1266) 評論(0)  編輯  收藏 所屬分類: C&C++

          主站蜘蛛池模板: 固安县| 红原县| 沾益县| 三河市| 昭觉县| 韩城市| 日喀则市| 曲麻莱县| 集安市| 辽宁省| 邳州市| 武平县| 胶南市| 娄烦县| 金昌市| 安新县| 左贡县| 诸城市| 固原市| 定陶县| 阜城县| 云梦县| 交口县| 吉水县| 柘荣县| 海阳市| 商洛市| 兴海县| 乌兰浩特市| 楚雄市| 威宁| 九龙城区| 福安市| 临沭县| 灵武市| 那坡县| 桃江县| 桂东县| 瓦房店市| 翁牛特旗| 通辽市|