[問題] visual c++ 6.0 無法正確編譯

看板C_and_CPP作者時間15年前 (2010/05/21 16:01), 編輯推噓4(4019)
留言23則, 5人參與, 最新討論串1/4 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) #include<stdio.h> int main(int argc,char *argv[]) { int a=5; printf("a is %d\n",a); char b='h'; return 0; } 希望得到的正確結果: 希望能夠正確編譯 程式跑出來的錯誤結果: d:\decode\datama\test.c(6) : error C2143: syntax error : missing ';' before 'type' 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ 6.0 有問題的code: (請善用置底文標色功能) 補充說明: 不確定變數宣告是否一定要在一開始就宣告,不過就我目前碰到的情況好像無法像這個 程式在中間的部份宣告變數 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.77.188

05/21 16:02, , 1F
C語言的變數一定在在block的前面宣告, 變數宣告不能發生
05/21 16:02, 1F

05/21 16:02, , 2F
在一般指令之後; 新版本的C語言不曉得還有沒有這個限制,
05/21 16:02, 2F

05/21 16:03, , 3F
但是VC6那時代的compiler應該還是有這個限制. 另外如果
05/21 16:03, 3F

05/21 16:03, , 4F
沒有特殊需求, 直接把副檔名改成.cpp, 讓VC6當成C++去y
05/21 16:03, 4F

05/21 16:04, , 5F
compile, 應該就可以compile過了....@_@"
05/21 16:04, 5F

05/21 16:04, , 6F
感謝 這各問題搞了我快一天的時間在DEBUG= =
05/21 16:04, 6F

05/21 16:17, , 7F
V大火速解決~ VC6.0真是萬惡的根源, 可以的話換新一點的
05/21 16:17, 7F

05/21 16:18, , 8F
版本就好了(2005 or 2008)
05/21 16:18, 8F

05/21 16:20, , 9F
其實我在vc++2008express 也是同樣的問題
05/21 16:20, 9F

05/21 16:35, , 10F
嗯~ 我剛試了一下, 情況真的是相同, 我還去確認compiler
05/21 16:35, 10F

05/21 16:37, , 11F
選項是選TC還TP, 結果也沒錯是TP(編譯成C++), 好像.c一定
05/21 16:37, 11F

05/21 16:38, , 12F
我又重新測試一遍,兩遍都 OK, 你們是怎麼啦?
05/21 16:38, 12F

05/21 16:39, , 13F
會以C程式碼方式編譯, 無論Compiler選項!?
05/21 16:39, 13F

05/21 16:41, , 14F
s大你有把檔案命名為*.c嗎? 這是這個問題的來源
05/21 16:41, 14F

05/21 16:41, , 15F
話說V大眼睛真利 XD
05/21 16:41, 15F

05/21 16:44, , 16F
唉呀,我眼殘~ 那個*.c檔編譯option真的被改為Tc了,你
05/21 16:44, 16F

05/21 16:45, , 17F
把它改成Tp即可
05/21 16:45, 17F

05/21 17:35, , 18F
因為以前也有error過啊Orz 那個msg真的不容易看XD
05/21 17:35, 18F

05/21 17:35, , 19F
尤其以前寫code都習慣寫.cpp內容寫C的code....
05/21 17:35, 19F

05/21 17:36, , 20F
所以第一次遇到.c變數宣告位置沒放好, 就印象深刻了:)
05/21 17:36, 20F

05/22 00:45, , 21F
那是因為identlist跟declList會在BlockList的開始
05/22 00:45, 21F

05/22 00:47, , 22F
(omnicompiler與是這樣定義的) 大概是配置堆疊方便吧
05/22 00:47, 22F

05/22 00:48, , 23F
blocklist通常會被包成compound block,就是大括號
05/22 00:48, 23F
文章代碼(AID): #1BzZtOd8 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BzZtOd8 (C_and_CPP)