看板 C_and_CPP 關於我們 聯絡資訊
這個問題很詭異 typedef int now_time; int main(int argc, char *argv[]) { int now_time; now_time my_time; return 0; } descent@debian64:tmp$ gcc b.c b.c: In function 'main': b.c:6:12: error: expected ';' before 'my_time' now_time my_time; ^ --------------------------------------------------- typedef int now_time; int main(int argc, char *argv[]) { now_time my_time; int now_time; return 0; } 編譯正確 真奇怪! -- 紙上得來終覺淺,絕知此事要躬行。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.141.254 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1494578284.A.35A.html
uranusjr: 不奇怪吧, 就定義覆蓋的問題啊 (合不合標準我沒查) 05/12 16:57
descent: 一個是變數名稱, 一個是變數型別的名稱, 為什麼會衝突? 05/12 17:08
是可以想成這樣嗎? int main(int argc, char *argv[]) { float my_time; int char; return 0; }
uranusjr: 不太一樣, char 是保留字, 所以上面會 error, 但自定義 05/12 17:22
uranusjr: 型別和變數都是 identifier, 是可以覆蓋的 05/12 17:22
uranusjr: 是在你真的使用那個 identifier (例如 cout) 才會去檢查 05/12 17:22
uranusjr: 那個 identifier 代表什麼, 這時候才會出錯 05/12 17:23
AstralBrain: 看 "type/non-type hiding" 那段 05/12 18:16
感謝 ※ 編輯: descent (101.9.196.61), 05/12/2017 22:35:23