[問題] 全域變數在C/C++的初始化
開發平台(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
12/27 14:44, 3F
推
12/27 16:07, , 4F
12/27 16:07, 4F
推
12/27 18:21, , 5F
12/27 18:21, 5F
→
12/27 23:44, , 6F
12/27 23:44, 6F
→
12/27 23:44, , 7F
12/27 23:44, 7F
推
12/28 01:53, , 8F
12/28 01:53, 8F
→
12/28 10:25, , 9F
12/28 10:25, 9F
推
12/29 00:52, , 10F
12/29 00:52, 10F
推
12/29 12:39, , 11F
12/29 12:39, 11F
→
12/29 22:34, , 12F
12/29 22:34, 12F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章