① 匯編器和編譯器有什麼區別
匯編器和編譯器的主要區別在於它們處理源代碼的方式和目標代碼的類型。
首先,編譯器是一種將高級編程語言(如C、C++、java等)源代碼轉換為機器語言(也稱為目標代碼或機器碼)的程序。編譯器讀取源代碼,進行詞法分析、語法分析、語義分析和優化等步驟,然後生成可以在特定計算機硬體上運行的機器代碼。編譯器通常生成的是與特定平台無關的代碼,這意味著生成的代碼可以在多種不同的計算機體系結構上運行,只要它們有適當的運行時環境。
相比之下,匯編器處理的是匯編語言源代碼,這是一種低級編程語言,其語法更接近機器語言。匯編器將匯編語言代碼轉換為機器代碼,但它通常不會進行高級編譯器所進行的那種復雜優化。此外,匯編語言通常是為特定的計算機體系結構編寫的,因此匯編器生成的機器代碼通常只能在特定的硬體上運行。
舉個例子,假設你有一段用C語言編寫的代碼,這段代碼描述了如何計算兩個數的和。編譯器會讀取這段C代碼,進行一系列的分析和優化,然後生成可以在特定計算機上運行的機器代碼。相反,如果你有一段用匯編語言編寫的代碼執行相同的任務,那麼匯編器將直接轉換這段代碼為機器代碼,而不會進行高級編譯器可能進行的優化。
總的來說,編譯器和匯編器都是將源代碼轉換為機器代碼的工具,但它們在處理源代碼的方式、生成的代碼類型以及優化的程度等方面存在顯著的差異。編譯器通常用於處理高級編程語言,生成與平台無關的代碼,而匯編器則用於處理低級匯編語言,生成與特定硬體緊密相關的代碼。
② G++和GCC和C,C++有什麼區別的
G++和C++都是C++語言的編譯器,二者基本相同。而GCC和C都是C語言編譯器,而這差別實際也不大。盡管C++規范中兼容絕大部分C的用法和幾乎全部函數,但畢竟還是有更改的地方。記住,如果你在學C或C++,不要過於遷就編譯器的差別!研究語言比研究編譯器(或編譯環境)要重要的多!
③ c語言的編譯器有哪些
C語言的編譯器有:GCC(GNU編譯器集合)、Clang、Microsoft Visual C++(MSVC)、Turbo C等。
GCC(GNU編譯器集合)
GCC是一個開源的編譯器,它支持多種編程語言,包括C語言。由於其免費、開源的特性以及良好的兼容性,GCC在Linux系統上非常流行。它不僅提供了編譯器的基本功能,還包括了大量的工具鏈和庫。由於它是跨平台的,因此在Linux、Windows和macOS等操作系統上都可以使用。
Clang
Clang是一個基於LLVM的C語言編譯器。它提供了非常高的編譯速度,並且具有強大的錯誤檢測和診斷能力。Clang的語法分析器能夠識別許多編程錯誤,使得開發者在編寫代碼時可以更加高效。它也支持多種操作系統,並且在一些現代的軟體開發環境中得到了廣泛的應用。
Microsoft Visual C++(MSVC)
Microsoft Visual C++是微軟開發的一種集成開發環境中的C語言編譯器。它提供了大量的庫函數,並支持最新的C語言標准。由於它內置於Visual Studio開發環境中,因此在Windows平台上進行C語言開發時非常受歡迎。同時,它還能提供高效的代碼優化和調試功能。
Turbo C
Turbo C是一種較為早期的C語言編譯器,主要在DOS操作系統中使用。盡管它已經比較久遠,但由於其小巧、快速的特點,在一些特定的應用場景中仍然被使用。現在,一些基於Turbo C的集成開發環境(IDE)也在市場上出現,為開發者提供了更便利的開發工具。
這些都是主流的C語言編譯器,每種編譯器都有其獨特的特性和適用場景。開發者可以根據自身的需求選擇合適的編譯器進行開發。
④ C++之IDE和編譯器的區別
C++的IDE與編譯器的區別:
IDE(Integrated Development Environment)指整合開發環境,也就是用於編輯程式碼、開發程式的應用程式,一般包含程式碼編輯器與編譯器等。C++的IDE有Visual C++6.0、GUIDE等;
編譯器(Compiler),則是用於將高階程式語言程式碼翻譯成目的碼(如機器語言)的程式。C++的編譯器是g++。
上面說了,IDE一般包含編譯器,也就是說編譯器一般屬於IDE的一部分。在IDE中可編輯、編譯程式碼,而編譯器只能編譯程式碼。
ide包括編譯器
你描述的IDE是自帶了編譯器的IDE。
仍有一些IDE只有開發環境,編譯器需要另外指定,比如codeblocks,這個IDE可以使用g或者vs編譯器或者別的。
還有個例子就是eclipse,本身並不帶編譯器,需要額外指定。
很明顯是Visual c++好,Visual c++功能比Turbo c 2.0強大的多. 兩個開發環境的針對性不同,Turbo c 2.0主要針對C進行開發,而Visual c++主要針對C++,但我覺得Visual c++開發C++和C都是很好的工具. Turbo c 2.0比較適合剛剛接觸C語言的人來使用,Visual c++可以說是從事商業開發的有效工具
C++的時編譯成機器程式碼,java的時位元組碼,就是虛擬指令,只能在java虛擬上執行。
c++的設計者說過,c++的設計目標是保留c語言的長處如:系統程式設計特性,執行快速快等,再新增上面向物件特性。
語言的特性決定編譯器的特點。核心的區別也就上面一句話,具體的差別那得幾本書來說明。c編譯器通常只編譯c檔案,c++編譯器可以同時編譯c和c++檔案。
包含關系。
IDE(Integrated Development Environment)指整合開發環境,可以用來編輯程式碼,包含有編譯器。一般現在最常用的就是VC++和Visual Studio了。
編譯器(Compiler),則是用於將高階程式語言程式碼翻譯成目的碼(如機器語言)的程式。C++一般是g++
1. IDE與硬體平台有關。不同IDE攜帶的編譯器不同。
2. 當然有關。不是半導體廠家提供的,而是編譯器開發廠商提供的,也有很多開源的編譯器。
3. 有關系。目前最常見的編譯器仍然只支援C/C++,宴殲C#的編譯器較少而且據說仍不完善。至於Java……哈哈,這種二道販子還需要勞煩編譯器?
4. 可以整合。具體的你需要查閱相應IDE的手冊,看看能夠整合晌逗沖/新增哪些編譯器。
5. 關心到架構就可以。廠商自己擴充套件的東西多半就是些對映,你看廠商的外設就行;而且很多廠商都提供了易於開發的庫(當然他們的庫也都是夠爛的,用熟了以後就可以扔掉)。
6. 是否用作業系統不影響編譯器,整體而言也不影響IDE;當然IDE中如果能夠新增針對作業系統元件的原生支援(重點是除錯方面),用起來就更方便。
優化方式理論上跟編譯器和硬體都有關聯。程式碼級別的優化,要看所使用的編譯器實現,Xcode用的是clang,VS用的是windows自己的編譯器。。。
匯編級別(指令級別)的優化,要根據硬體對應的指令集實現,指令集根據CPU型別的不同而不同。。。
g++編譯時實際上是呼叫g進行編譯;
g不能自動連結庫檔案,一般用g++來連結庫檔案,非要用g的話,一般使用g -lstdc++命令;
extern 「c」對於g和g++沒有區別;
實際使用時只需安裝g和g++中的一個就行了,如果使用g,編譯直接用g就行了,連結要加上-lstdc++引數;如果使用g++,編譯時實際還是呼叫g,連結直接使用g++即可;
關於包含庫檔案標頭檔案的說明:以gtd庫檔案為例,庫檔案一般是libgtd.so格式的檔案,如果是libgtd-***.so或者其他格式,可以通過軟連結命令轉化成libgtd.so格式,ln
-s libgtd-***.so
libgtd.so。一般庫檔案如果是放在/lib,/usr/lib,/usr/local/lib目錄下,則無需額外處理,編譯連結時-lgtd會自動找到對應檔案不會報錯,但是如果不在對應目錄,則需要加上-L
/所在目錄
-lgtd才能找到對應的庫檔案。標頭檔案一般是採用原始檔中用#include命令包含,而不是採用-include引數包含,標頭檔案如果放在/usr/include目錄下則會自動找到不會報錯,否則編譯連結時需要使用-I
/所在目錄才能正確找到。
編譯連結命令示例:
g++ test.cpp -o test.txt -L /mytest/lib -lgtd -I /mytest/include
⑤ CC和gcc是一樣的編譯器嗎
cc是Unix系統的C Compiler,而gcc則是GNU Compiler Collection,GNU編譯器套裝。gcc原名為Gun C語言編譯器,因為它原本只能處理C語言,但gcc很快地擴展,包含很多編譯器(C、C++、Objective-C、Ada、Fortran、Java)。因此,它們是不一樣的,一個是古老的C編譯器,一個是GNU編譯器集合,gcc裡面的C編譯器比cc強大多了,因此沒必要用cc。
下載不到cc的原因在於:cc來自於昂貴的Unix系統,cc是商業軟體。
Linux下的cc是gcc符號連接,可以通過$ls –l /usr/bin/cc來簡單察看,該變數是make程序的內建變數,默認指向gcc。cc符號鏈接和變數存在的意義在於源碼的移植性,可以方便的用gcc來編譯老的用cc編譯的Unix軟體,甚至連makefile都不用改在,而且也便於Linux程序在Unix下編譯。