→ firejox:我愈來愈覺得你對UB抱持著很深的怨恨.... 07/24 01:19
如果是我個人意見的話,我對於 C 語言有一堆 UB 還好,因為這語
言一開始就擺明了要追求無人可以超越的效率。代價是這語言放了很多責
任在程式設計師上。我比較在乎的是寫 C 語言的程式設計師有沒有意識
到這個語言放了一堆責任在程式設計師上。有趣的是,在我經驗中,大家
寫組語好像都滿小心的,可是 C 就沒那麼小心的樣子。我個人覺得這兩
個是差不多危險的東西。
UB 本身的意思只是說 C 語言沒有規定,但系統中還有其他文件可以
看啊。只要其他文件有規定,那在那系統中就不會引爆核彈。說起來我的
願望可能更像... 希望更多人可以意識到 C 語言很多都故意不規定清楚;
如果真的要玩底層,一定要閱讀平台或編譯器相關文件,不要把自己系統
的作法當作全世界的標準。
以上都跟技術無關,純粹個人看法。我平常盡量只談技術的事情 xD
※ 編輯: Favonia 來自: 140.112.30.39 (07/24 10:10)
→ angleevil:看來即使我看懂那三篇,還是遠遠不夠阿 07/24 08:40
※ 編輯: Favonia 來自: 140.112.30.39 (07/24 10:11)
※ 編輯: Favonia 來自: 140.112.30.39 (07/24 10:12)
※ 編輯: Favonia 來自: 140.112.30.39 (07/24 10:20)
→ firejox:你有沒有想過 假如compiler不鳥所謂的"標準"的話 07/24 22:39
→ firejox:因為C的歷史比"標準"的出現還古老.... 07/24 22:40
→ firejox:即使是以新的"標準"寫的code 但不見得compiler會支援呀 07/24 22:42
→ firejox:"標準"本身也似乎沒啥強制力的.... 07/24 22:43
現在大部分編譯器都有支援大部分的 C99 / C++98, 就連 POSIX 都
像基於 C 標準之上了。許多編譯器也都喜歡往自己臉上貼金說「我有支
援標準」,然後很多教學文件也把 C90 和 K&R 視為舊時代標準...所以
我想在大家愛面子(?)的情況下會努力支援新標準的。另一方面,標準
委員會也很在乎新功能是不是「成熟」,所以我想不至於訂出太離譜的標
準。像是 C1X Charter 有寫:
| Additional Principles for C1X
|
| 13. Unlike for C9X, the consensus at the London meeting
| was that there should be no invention, without exception.
| Only those features that have a history and are in common
| use by a commercial implementation should be considered.
| Also there must be care to standardize these features
| in a way that would make the Standard and the commercial
| implementation compatible.
總之我認為實務上學習標準是可行的。我覺得問題反而是標準很多東
西故意不講清楚,而不是規定太多大家不想實作...
→ firejox:一份code在外在條件足夠下可以跨平台 07/24 22:55
(我沒看懂上面這句 orz)
※ 編輯: Favonia 來自: 140.112.30.39 (07/25 00:28)
→ firejox:sorry 我那句是打錯的XD 07/25 00:38
→ firejox:不過標準的發展較其他編譯器or平台所支援的較晚... 07/25 00:41
→ firejox:有時會為了platform反而會有限制... 07/25 00:42
→ firejox:比方說flac 07/25 00:42
可以問一下 flac 是指什麼嗎?
→ tropical72:我推 firejox 大,沒要戰之意,但若為vc愛好者,compiler 07/25 04:55
→ tropical72:如何實做了解後,似乎比了解標準怎做來得有意義 XD 07/25 04:55
先說我沒有反對去學特定編譯器或特定平台在幹麼 xDDD 我反對的是
錯把特定實作的行為當成全世界的標準 xD 另外 VC 也很愛宣稱自己符合
標準,一些地方也慢慢改成符合標準的作法了;所以我覺得學標準還是有
好處,因為現在不符合標準的地方可能以後就改掉了! xD
※ 編輯: Favonia 來自: 140.112.30.39 (07/25 07:39)
→ firejox:flac對於超過2GB的檔案(大檔案)處理會有問題 07/25 09:56
→ firejox:裏面有用到fseek (雖然我不確定現在有沒有改) 07/25 10:00
→ firejox:雖然說是標準 但有時候反而沒辦法符合現實需求 07/25 10:01
剛才稍微查一下,這好像比較像是 32 位元作業系統本身的限制耶。
如果是 POSIX 已經加了這個東西:
@ http://www.opengroup.org/platform/lfs.html
然後 FLAC 好像也改了:
| FLAC 1.1.3 (27-Nov-2006)
| General:
| Large file (>2GB) support everywhere
@ http://flac.sourceforge.net/changelog.html
所以雖然 C 語言標準沒辦法做到,作業系統的標準好像可以處理了。
※ 編輯: Favonia 來自: 140.112.30.39 (07/25 14:52)
※ 編輯: Favonia 來自: 140.112.30.39 (07/25 15:13)
推 xatier:又沒人規定一定要遵守(最新)的標準XD 07/25 16:32
雖然我不知道原因,但 VC++ 一直暗中提昇跟標準的契合度是事實 xD
※ 編輯: Favonia 來自: 140.112.30.39 (07/25 23:03)
※ 編輯: Favonia 來自: 140.112.30.39 (07/25 23:03)
※ 編輯: Favonia 來自: 140.112.30.39 (07/30 10:30)