C 語言不是跨平台嗎?為什麼有的 C 語言原始檔還要區分平台?

時間 2021-05-31 07:48:11

1樓:羅永錘

因為區分平台的部分大多數都是組合語言。

而c要區分的話是因為作業系統本身有個功能就是管理硬體,當然要根據硬體的不同來區分目錄了。就像同樣是通訊硬體,雖然提供給上層的介面類似,但是乙太網和光纖的具體實現肯定要用不同的c程式。

2樓:開源醬

因為不同平台上有不同的實現和不同的擴充套件(ANSI C 之外的部分)比如 GCC 定義了在

if else 裡的 likely unlikely再比如 GCC 裡的 exec 家族還多了個 execvpe (ANSI C 裡 execvp 的基礎上加了乙個環境變數)

或者在 Windows 裡你 include 了 windows.h 但是 Linux / OS X 裡顯然沒有這東西,對於這種東西你自然要區分平台

3樓:李勇

比如你用printf,隨便換平台都可以用啊,因為這是乙個標準的IO函式,支援的平台都把這個函式實現了。

但是你要是調了乙個windows API函式,如果你在其它平台上用,肯定不行啊,因為這個平台沒有實現這個函式啊。

4樓:yang leonier

C語言跨平台,CRT和系統呼叫可不跨平台。

另外對於嚴重依賴位運算,嚴重依賴對齊甚至使用內聯彙編的程式來說指令集和架構也會成為移植的障礙

5樓:Leon Lee

比如說你在WIN上和 LINUX 編寫簡單的SOCKET 包含的標頭檔案都不一樣一些庫函式不同怎麼都不一樣啊這就是為什麼很多人程式設計要封裝基礎函式換平台的時候通過編譯引數來選擇所需平台

6樓:馮東

跨平台(cross-platform)是按照標準來進行的。不同的標準有不同的 coverage。ANSI C 標準只 cover 語法和少量標準庫。

POSIX 可以 cover 諸如檔案操作、socket 等 I/O,還有程序和執行緒的管理。BSD 可以 cover 更多的應用。但是 coverage 越高的標準,支援的平台就越少,而且還會產生用法上的差別。

能覆蓋應用各個方面的就是一些還沒有形成標準的平台特有的庫了。

為什麼有C語言 有C 卻沒有C 語言?

Alds Nick C 這個名字是Rick Mascitti於1983年中所建議的,並於1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為 new C 之後是 C with Classes 在電腦科學中,C 仍被稱為C語言的上層結構。它最後得名於C語言中的 操作符 其對變數的值進行...

為什麼 C 語言沒有被 C 取代?

avoidant 如果這個世界上只有c和c 那c早就被c 取代了。正是因為那些不認同c 理念的語言的存在,才讓c更加有了存在的必要 作為一種不同語言都願意接受的普通話。事實上,別說不同語言,就是不同c 編譯器也選擇了c作為彼此間溝通的普通話。 恆星 這就好像為什麼30系顯示卡都發布了卻還有人在用9系...

很多語言都比c語言簡單,為什麼還學c語言?

yyywhy c不難,而是很多功能同樣用c寫就比其他語言難。比如快速讀取時可能用的紅黑樹用c寫就得使用紅黑樹原生介面,各種巨集,而用c 直接乙個map搞定。c的封裝程度太低。 刃舞 我覺得你說反了,C 的語法特性比大多數程式語言少,我實在想不通為什麼總有人說 C 比別的難,C 到底難在哪了?難在手動...