→ loveme00835:所謂未定義是指「沒有說這時候應該怎麼做」, 而不是說 06/27 01:58
→ loveme00835:「這時候你會出錯」 06/27 01:59
→ loveme00835:因為這有時會明講 behavior is undefined, 但是上面寫 06/27 02:02
→ loveme00835:的你沒做到, 也是等於這件事情 06/27 02:03
推 a127a127:唔,看不太懂3、4F那句的意思@_@a。 06/27 02:46
→ a127a127:看起來即使行為未定義,編譯器也有責任丟一個訊息提醒。 06/27 02:48
→ a127a127: ^在某些情況下, 06/27 02:49
er... 總之
(1) 標準沒有清楚說未定義
(2) 編譯器要負責提醒這種錯誤
===
感謝 a127 提醒!C 標準對於 constraint 有嚴格定義,跟一般人的用法
不一樣。要怎麼知道是 constraint 呢?以 C99+TC1/2/3 (n1256) p.128 為例:
6.7.5.2 Array declarators
Constraints
1 In addition to ...
2 An ordinary identifier ...
Semantics
3 ...
4 ...
所以前兩個段落就是 constraints! 裡面出現的 shall 不受到 4/1 的規範。
而其他地方出現的 shall/shall not 只要一違反就是未定義,希望有成功清楚
解釋。先說我討厭標準寫得這麼麻煩,不過它的確是這個意思。
※ 編輯: Favonia 來自: 140.112.30.39 (06/27 04:24)
推 a127a127:懂了@_@a,感謝<(_ _)>,所以這根本是有定義的喔 @_@a 06/27 04:25
→ Favonia:我覺得標準根本沒講清楚。標準的重點在於編譯器要發警告! 06/27 04:28
推 a127a127:看了一下其他的constraint,好嚴重啊,一違反幾乎就CE了 06/27 05:34
→ angleevil:c/c++真的是很煩程式語言.尤其是c有好嚴重的歷史包袱 06/27 09:52
→ yoco315:樓上讓我想到一件很有趣的事情,很多C的信徒覺得C++很dirty 06/27 11:22
→ yoco315:卻無視這些dirty幾乎都是從C繼承來的這個事實 XD 06/27 11:23
→ james732:很好奇如果C++完全不理會C的相容性,會是怎樣的語言 XD 06/27 11:23
→ james732:可惜實際上不可能這麼做... 06/27 11:23
→ angleevil:一定是很完美的語言,竟然可以忍受c的黑暗包袱 06/27 11:29
→ james732:D語言算是不理C的C++? 之前沒有深入研究過...XD 06/27 12:55
※ 編輯: Favonia 來自: 140.112.30.39 (06/27 12:58)
→ angleevil:沒深入研究,但是覺得不太算. 06/27 14:00
→ yoco315:之前有花一點時間摸了一下,覺得是很不錯的語言,拿掉了很多 06/27 15:25
→ yoco315:缺點,加進了一些C++沒有的優點,不過後來C++0x越來越讓人期 06/27 15:26
→ yoco315:待,且golang的型別系統也讓人很喜歡,然後就不鳥d了 QQ 06/27 15:27
推 loveme00835:XD 06/27 15:45
推 littleshan:我倒是看過 D 2.0 後就對 C++0x 不抱期望了 06/27 16:48
→ angleevil:~"~ 我的錯覺嘛? 我記得wiki沒有很稱讚D阿 06/27 17:49
推 purpose:嫌貨才是買貨人,沒人用的東西就不會有人嫌 06/27 17:52
→ yoco315:是喔,那我也來看一下2.0,竟然前輩這麼推 06/27 17:57
→ yoco315:真的是很優秀的語言, 真替她難過 QQ 06/27 18:16
推 loveme00835:C++: Q口Q 06/27 18:33
推 xatier: C++: Q口Q 06/27 18:38
→ angleevil:誰叫c++還不肯離開c.c++98版本後,早就可以自立門戶 06/27 20:47
→ angleevil:要不是跨平台的問題. 06/27 20:48
推 littleshan:C++要是離開C就不會有人用了,因為舊的code無法編 06/27 22:18
→ yoco315:小善是對的 06/28 09:15
推 stosto:C++離開C後 C++使用者會很開心的 06/29 00:08
→ james732:不過真正的C++使用者應該不太多....XD 06/29 00:11
→ yoco315:james是對的 06/29 16:19
→ angleevil:可能要先定義真正的意思 06/29 17:24