[問題] 全域變數在C/C++的初始化

看板C_and_CPP (C/C++)作者 (天真紅)時間10年前 (2015/12/27 13:42), 10年前編輯推噓7(705)
留言12則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev c++,VS 問題(Question): 一開始是遇到了這個問題 int a = 10; int b = a; int main(){return 0;} 在C是不行的,錯誤訊息: initializer element is not constant C++則沒問題 所以我改成 const int a = 10; int b = a; int main(){return 0;} 依舊是不行 查了一下知道了大概的理由,但還是有點不知所以 看完後的理解是: C在初始化全域變數時需要constant expressions,因為他是存在Data segment 然後在C++初始化全域變數時則不需要 至於加了const後還是不行則是因為在C裡不算是標準的constant expressions 他需要compile-time constant(全域變數是在compile time初始化的) (以上是從stackoverflow不同回答拼湊出來的想法 不知道有沒有哪裡理解錯?或是能幫我多做補充的 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 134.208.41.23 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1451194952.A.86D.html

12/27 14:33, , 1F
先不說全域變數怎麼起始了, 有聞到臭味嗎?
12/27 14:33, 1F

12/27 14:34, , 2F
12/27 14:34, 2F
剛剛有看到這篇 想說fr3@k 怎麼這麼眼熟XD ※ 編輯: NaiveRed (134.208.41.23), 12/27/2015 14:37:07

12/27 14:44, , 3F
剛數了一下, 其實有四篇. 是說我也太喜歡全域物件了吧!? XD
12/27 14:44, 3F

12/27 16:07, , 4F
原本 b=a 是程式執行期間才能做的事
12/27 16:07, 4F

12/27 18:21, , 5F
執行期才知道a是甚麼 所以當然在執行期才能做b=a
12/27 18:21, 5F

12/27 23:44, , 6F
然後 C++ 支援 class, 建構子裡面有更多比 b=a 噁心
12/27 23:44, 6F

12/27 23:44, , 7F
的東西
12/27 23:44, 7F

12/28 01:53, , 8F
好久沒看到fr3@k了@@
12/28 01:53, 8F

12/28 10:25, , 9F
legendmtg, 慢慢要浮出水面換氣了 :-)
12/28 10:25, 9F

12/29 00:52, , 10F
cout會再辦嗎 雖然現在人不在台灣了orz
12/29 00:52, 10F

12/29 12:39, , 11F
先等我恢復多點元氣再說 QQ 有人願意幫忙當然是更好
12/29 12:39, 11F

12/29 22:34, , 12F
期待 cout
12/29 22:34, 12F
文章代碼(AID): #1MVtf8Xj (C_and_CPP)
文章代碼(AID): #1MVtf8Xj (C_and_CPP)