Re: [問題] C語言 struct 問題

看板C_and_CPP作者 (-858993460)時間14年前 (2010/11/20 07:25), 編輯推噓10(10015)
留言25則, 8人參與, 最新討論串3/3 (看更多)
※ 引述《madoka82 (惡水上的大橋)》之銘言: : → madoka82:眼殘...沒看到還是要在 VC 下頭編,如果是只改檔名就可以 11/20 12:14 : → madoka82:解決的問題,那還是直接改副檔名或許會快一點... 11/20 12:14 : → tropical72:的確馬上改檔名可以過,只是用.c一直過不去所以很好奇 11/20 12:19 : → tropical72:另外..您的code我於vc用.c測,似乎沒辦法過.. 11/20 12:20 : → tropical72:我的原碼與錯誤訊息:http://nopaste.csie.org/190d9 11/20 12:24 : → madoka82:如果把 (1) typedef 那行的 struct 拿掉可以過嗎?_? 好奇 11/20 12:25 : → tropical72:一樣不會.我縮減我的程式碼,發現問題都是在 (a) 行 11/20 12:34 : → tropical72:http://nopaste.csie.org/f80c7 註解掉就過了. 11/20 12:35 : → tropical72:所以才上MSDN查C2275 http://ppt.cc/TI(W ,還是看不出 11/20 12:36 : → tropical72:個所以然.. 11/20 12:36 : 推 tomcallme:我也都這樣寫 11/20 15:14 這個是這樣的: 上面的 struct 那段定義了一個 unnamed struct 然後用 typedef 把這個 unnamed struct 定成 Node 再把 Node* 去定義 pNode 也就是並不存在 'struct Node' 這個東西 所以你的結構定義裡的 struct Node * 就會導致 C4133 至於那個 C2275....純粹是因為你在函式中間才宣告變數的關係 C 語言規定所有的變數宣告一定要在 block 的開頭 也就是跟在 { 的後面 不能在函式中間直接宣告新變數... -- 'Oh, Harry, don't you see?' Hermione breathed. 'If she could have done one thing to make absolutely sure that every single person in this school will read your interview, it was banning it!' ---'Harry Potter and the order of the phoenix', P513 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.28.92

11/20 15:31, , 1F
發問~我也是寫C 可是沒碰過最後四句那個情況耶 = =
11/20 15:31, 1F

11/20 15:36, , 2F
樓上那是你都用 .cpp 的副檔名的關係...
11/20 15:36, 2F

11/20 15:39, , 3F
我都用*.c ......
11/20 15:39, 3F

11/20 15:42, , 4F
0.0 真的啦 我沒有騙你 我的程式都是.c的副檔名
11/20 15:42, 4F

11/20 15:42, , 5F
那樓上用的編譯環境?
11/20 15:42, 5F

11/20 15:42, , 6F
Dev-c++ 或是 code::blocks
11/20 15:42, 6F

11/20 15:43, , 7F
你應該是問這個吧 我沒有很專業 怕答非所問
11/20 15:43, 7F

11/20 15:44, , 8F
是的,剛剛試了一下gcc就算是.c檔其實也不會抓這個問題
11/20 15:44, 8F

11/20 15:45, , 9F
喔喔 3Q
11/20 15:45, 9F

11/20 15:46, , 10F
因為gcc預設是延伸過的標準 改用-std=c89應該就會錯
11/20 15:46, 10F

11/20 15:46, , 11F
-std=c89與-ansi都不會錯 真是...
11/20 15:46, 11F

11/20 15:49, , 12F
所以這是舊的觀念的意思嗎?
11/20 15:49, 12F

11/20 15:50, , 13F
神奇 竟然沒錯 那是以前的標準 後來就拿掉了
11/20 15:50, 13F

11/20 15:50, , 14F
應該說這是標準的規定,但編譯器可能會放寬這個規則
11/20 15:50, 14F

11/20 15:51, , 15F
嗯~
11/20 15:51, 15F

11/20 15:58, , 16F
XD 所以大家寫 C 語言都把變數全堆在一起囉?
11/20 15:58, 16F

11/20 16:00, , 17F
我看過的寫法是用 { } 弄出一個 block 再宣告變數
11/20 16:00, 17F

11/20 16:01, , 18F
void func() { 變數 程式 { 變數 程式 } } 這樣的感覺
11/20 16:01, 18F

11/20 16:06, , 19F
C99 A.2.3 block-item-list 那邊就可以穿插用阿 XD
11/20 16:06, 19F

11/20 16:49, , 20F
事實這問題我查了一些時間,如loveme大大所說,c99有支援
11/20 16:49, 20F

11/20 16:50, , 21F
好笑的是又看到"流言"說,M$公布不從C99,於是遇到這種
11/20 16:50, 21F

11/20 16:51, , 22F
窘境.不論如何,謝謝LPH說明,我受益良多 :)
11/20 16:51, 22F

11/20 16:52, , 23F
附註:dev-c++, gcc, code::blocks 查是都從C99
11/20 16:52, 23F

11/22 01:07, , 24F
gcc的確沒有最後那4行的問題! 最近用VC就有 - -
11/22 01:07, 24F

11/22 16:40, , 25F
最後那四行 ... 編譯會過不代表沒問題啊 XD
11/22 16:40, 25F
文章代碼(AID): #1CvtVSzw (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1CvtVSzw (C_and_CPP)