Re: [問題] 新手一問:C比較常被拿來寫什麼?

看板C_and_CPP作者 (CA)時間12年前 (2012/06/08 01:15), 編輯推噓7(701)
留言8則, 8人參與, 最新討論串4/4 (看更多)
※ 引述《EdisonX (閉上眼的魚)》之銘言: : 如果程式裡面有用到不是標準的函式庫,是該編譯器特有的, : 那很可能換了作業系統之後就不能正常執行。 : 但尷尬的是,C/C++ 標準函式庫裡面完全沒有規定, : 真正要寫 GUI (使用者圖形化界面)時,該調用哪些函數, : 所以在 linux 下寫的圖形化界面、在 windows 下寫的圖形化界面, : 程式碼很可能會不一樣,這問題便是討論串中的「跨平台」問題。 : 當然「跨平台」這說法現在已有點泛濫了,只要是 : 作業系統、CPU 架構不同 (x86, x64)、編譯器(compiler)不同 等, : 這些都被統稱為不同之平台,而要解決跨平台問題,往往是最麻煩的, : 最理想的狀況就是,寫好同一份程式碼, : 這份程式碼它在不同的平台編譯後所產生的執行檔,都可以順利執行。 : 基本上個人認為這難度頗高,試想一下作業系統有哪些就好... : 而在討論串裡面所提到的 QT, gtk , VC, MFC, wx... 等, : 他們除了標準函式庫之外,都還有自己其他「額外」的函式庫, : 但同一份程式碼要從 windows 作業系統跨到 linux 作業系統, : 基本上好像是不可能的,但確實有幾份 compiler 致力在做這件事, : 這便是原文推文串裡所在討論的一些事。 我必須要說,大多數狀況下 Qt 只需要一份 code 我只懂 Qt,其他的我不懂,但我相信 gtk+ 和 wxwidget 亦如是 除非你真的需要操作特定平台的屬性 例如為了強制關閉視窗特效,我必須使用 Windows 的 DWM 和 libx11 (不得不說 X11 的文件實在是 ... 不過這是另一個故事) 而且這些問題基本上和 toolchain 無關 真正跟 toolchain 有關的是,即便有相同的標準也不一定就有相同的行為 VC6 在 C++ 的瘋狂事蹟就不用提了,真是時代的眼淚 VC10 的 lambda bug 我就踩過三個 鳥蛋的是 C++ 還有 name mangling 的問題,這還沒標準 而 desktop 上最慘的是 XCode 因為 GNU license 的問題,XCode 還在用 GNU gcc 4.2(apple 有修改過) 用它的 llvm-gcc 編譯某些 project 還會失敗(e.g.: FFmpeg) 要用它附的 clang 3.0 才會成功 偏偏 clang 3.0 又沒實作 lambda 當你去找了 gcc 4.7 和 clang 3.1 源碼自已編以後才發現 泥馬的 gnu gcc 沒支援新的 Object-C 語法 clang 3.1 漏了 std::function 的 copy constructor 然後把這些用不同 toolchain 編好的 lib link 起來之後 你還要擔心會不會 crash 在 libc++ 裡(我遇過二次,4.6 和 4.7 各一次) 然後你就會發現某些 project 堅持使用 C 還是有它的道理 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.44.193

06/08 01:27, , 1F
謝謝補充指正 :)
06/08 01:27, 1F

06/08 08:00, , 2F
是 CA 大大(高速拜)
06/08 08:00, 2F

06/08 08:01, , 3F
Debug 到後面都變成歷史研究者了 推
06/08 08:01, 3F

06/08 08:25, , 4F
看起來跨平臺 實際上並不跨平臺的語言....(淚目
06/08 08:25, 4F

06/08 12:29, , 5F
gnu跟object-c據說已經分頭了,gnu不再支援object-c
06/08 12:29, 5F

06/08 12:45, , 6F
看來appale在不開源這方面下了很多苦工
06/08 12:45, 6F

06/08 13:46, , 7F
謝謝你的回答~
06/08 13:46, 7F

06/08 21:20, , 8F
推用C語言就好....XD
06/08 21:20, 8F
文章代碼(AID): #1FqE7Ck6 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FqE7Ck6 (C_and_CPP)