這可能是一個愚蠢的問題,但我一直在想這個問題。 C(或任何其他低級語言)是否具有源代碼,還是編譯器是「完成所有工作」的部分,包括解析?如果是這樣,不同的編譯器有不同的C語言嗎? stdlib的因素在哪裏呢?我真的很想知道這是如何工作的。是C開源嗎?
是C開源嗎?
回答
C語言不是一個軟件,而是一個defined standard,所以人們不會說它是開源的,而是它是一個開放的標準。對於C來說,有很多不同的編譯器,而且其中的許多編譯器確實是開源的。最值得注意的例子是GCC's C compiler,它全部在GNU General Public License (GPL)之下,這是一個開源許可證。
還有更多選項。例如,Watcom是開源的。不缺少開源C編譯器,但毫無疑問,至少在非Windows世界中,最廣泛的是GCC。
GCC的C編譯器是用C寫因此,我們知道至少有C語言編寫的一個 C編譯器
GNU的stdlib
(glibc的)也被寫在C(stdio.h中,文件stdlib.h )。但它也有一些用匯編語言編寫的部分。
C是一個標準,它指定了C編譯器應該如何生成程序。
C本身沒有任何源代碼,就像音符沒有任何塑料一樣。
一些C編譯器,如GCC,是開源的。
編譯器會確定所有映射從C到大會等...但只要有人擁有它.....沒有人真正擁有-c但是在ANSI/ISO確定標準
C是剛一種語言,也是一種標準化的語言。編譯器幾乎「做所有的工作」。不同的編譯器有不同的方言;在C99 ANSI標準之前,你有像Borland C和其他競爭編譯器那樣的東西,它們以他們自己的方式實現了C語言。
stdlib
只是需要在任何ANSI C實現中出現的標準庫的商定集合。
要添加到其他偉大的答案:
對於不同的方言 - 但是也有一些具體的編譯器添加到C一些額外的功能。您可以將命令行標記-std=...
提供給gcc以指定要使用的C標準,每個標準對語法都有輕微的變化/添加,最常見的可能是c99
。
每個編譯器都傾向於實現一些不同的額外特性,例如,typeof()
不在C標準中,所以編譯器不必實現這一點,但它很有用,大多數編譯器都提供它。這裏是a list of gcc C extensions
stdlib是C標準中規定的一組函數。很像編譯器,stdlib可以有不同的實現。GNU實現和gcc一樣是開源的,但也有其他的編譯器,也可能是stdlib的其他閉源實現。
一個非常好的問題。 There is a way以嚴格和無歧義的語言以「源代碼」的形式定義語言標準(不是實現!)。不幸的是,包括C在內的所有舊語言的定義都很差。但是仍然有可能將這些定義轉換爲源代碼形式。
另一種方法是通過其operational semantics定義語言,往往在一個簡單的(和效率不高)參考實現的形式。
埃爾加·拉夫恩·岡納森寫的主要答案,但我認爲這將是值得注意的是,你可以有效地與方言結束了。
編譯器應該做同樣的事情,以標準爲準他們支持(這些天應該是幾乎所有相同的版本),但也有灰色地帶的問候。例如,編譯器爲「未定義」功能工作的方式。如果C規範說明某個特定情況下的行爲未定義,那麼編譯器可以做到它想要的東西。
還有的添加(添加新庫)的庫編譯器廠商支持特定平臺的特質,創造競爭優勢,或者只是爲了讓生活更輕鬆函數的例子。玩世不恭者可能會建議添加其中的一些,以幫助將人員鎖定到特定的編譯器中。
我要說的是,C作爲一門語言是不是開源。 正如指出的很多,你可以下載GNU許可的編譯器和庫免費,但如果你想寫自己的C編譯器,你將需要遵循ISO C標準,ISO收取真金白銀爲C的說明語言,在發佈時這是178美元。 所以真正的答案取決於你對自由和開放源代碼感興趣的元素。
- 1. Dojo是開源的嗎?
- 2. 是iText 5.4.2開源嗎?
- 3. 是Fuse ESB的開源嗎?
- 4. CCTray是開源的嗎?
- 5. JavaFX是開源的嗎?
- 6. Github.com源代碼是開源的嗎?
- 7. C#中的開源OCR好嗎?#
- 8. 是StreamBase有開源的選擇嗎?
- 9. ASP.Net動態數據是開源的嗎?
- 10. 果園asp.net cms。它是開源的嗎?
- 11. Windows Azure cspack.exe是開源的嗎?
- 12. 是Reactive Extensions開放源代碼嗎?
- 13. 是Schema.org的開源代碼嗎?
- 14. Terracota Cluster仍然是開源的嗎?
- 15. GitHub for Windows - 它是開源的嗎?
- 16. Android瀏覽器是開源的嗎?
- 17. 開源C++爬蟲?
- 18. C++開源項目
- 19. 條紋開源CMS嗎?
- 20. 我們應該開源嗎?
- 21. Opentaps開源死了嗎?
- 22. C#有一個集中的開源代碼庫嗎?
- 23. 貢獻開源C++庫
- 24. 開源C#vt100服務器
- 25. 開源突變測試C++
- 26. 開源C++掃描庫
- 27. C++開源項目推薦
- 28. C#開源NMEA解析器
- 29. Windows驅動程序開發有沒有開源的C庫(不是C++)?
- 30. C \ C++開源PCM到Mp3轉換器?
很好的答案,雖然音符/塑料比喻有點超現實。 :-) – Spudley 2011-02-24 13:22:59