① 每個編譯器都不一樣么 c語言一般用什麼編譯器 每次一種編譯器不能編譯 另一種卻能編譯出
編譯器就是c語言編譯成二進制的東西,
不同的編譯器是不同的,
比如16位系統和32位系統的編譯器就不同,因為16位的認為int是2位元組,32位的則認為是4個位元組。
另外
linux上的編譯器跟windows下的編譯器也不同,linux上的認為內核空間佔1G,而windows下則認為佔2G,
此外兩個系統對環境變數以及其他的設置也不同所以編譯器更不能用。
而且不同的CPU的指令集時不同的,所以同樣int
a
=1
最後被編譯成的二進制代碼也是不同的。
C語言的編譯器有很多,windows下的編譯器也有很多,不同的編譯器可能會做一些不同的優化,linux下的gcc也可以添加選項讓他編譯windows下運行的程序。
main(int
argc,char*argv[
】
)
argc
是你的參數個數
argv是你的參數。
比如你最終程序叫
add
那麼
你在命令行執行add
1
2
那麼argc
=3
第一個參數使你的add,
第二個第三個就是
1
2,
在函數內部你就可以獲取這倆參數進行相加然後列印
visual
是個IDE,集成開發環境,已經集成好了windows下使用的編譯器連接器
等,
編寫代碼完成後直接點擊編譯就行了。
IDE的默認編譯器是可以更改的,不同的IDE設置不同。
② 編譯器是什麼
簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言,而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。
編譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器語言)的翻譯過程。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。
典型的編譯器輸出是由包含入口點的名字和地址, 以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的EXE,
所以我們電腦上的文件都是經過編譯後的文件。
③ 每個編程語言都有不同的編譯器嗎
是的,在編程的世界裡面,對於每一種邊緣都需要使用不同的編譯器,因為他們的編碼的形式和規則都是不一樣的,希望可以幫到你
④ 編譯器不一樣 程序會一樣嗎
一樣的可能性很大,但是也不能說絕對一樣,這還是取決於你的代碼:例如
在vc中
void main(){
int i=3;
printf("%d %d",i,i++);
}
Debug模式輸出:
3 3
Release模式輸出:
4 3
關於i++,++i,--i,i--這樣的問題不同的編譯器的理解區別很大,還有int類型,16位的編譯器理解為short,32位的編譯器理解為long.因此,一樣的代碼,不同的編譯器的結果可能不一樣.
⑤ C語言用的編譯器還有分別呢嗎
C語言用的編譯器有分別,不同的平台上的編譯器無疑是不同的,同一種平台上不同公司出的編譯器也不同。
因為編譯器本身也是程序,它們的頭文件內容不同,它們自帶的特殊函數不同,這都影響我們程序的寫法,程序中的調用函數名,函數的參數個數,內容。
即使是同一公司,同一編譯器,例如MS VC++, 版本不同也不同,6.0版的程序在5.0上可能通不過,專業版的在企業版,學生版上編譯通不過,司空見慣啦。
同一編譯器,編譯方法設定不同,(是否優化,動態靜態鏈接等),編出的可執行程序也是不同的。
當然,對一些初級程序來說,用哪個編譯器都沒問題。
C語言可以作圖形界面。例如unix用X-window 庫函數,或調Motif,或GL庫.
PC上的C語言,調用GLUT庫還可以支持3維作圖,不用說2維了。
至於用戶圖形界面--UGI(User Graphic Interface) ,windwos環境下還是用VC++調MFC 為最佳捷徑。
⑥ 我想學自學C語言,但網上有好多種編譯器,請問代碼格式等都是一樣的嗎還有用什麼入門好!我是靠看視頻
不同編譯器的代碼「基本」相同,既然是基本當然有不同的地方。
既然你是看視頻學的,那你就和你看的視頻一致啊,不然可能對於你的學習造成很大影響。同樣的代碼,在不同編譯器上,可能結果不同,甚至無法編譯(語法錯誤)
⑦ C和C++是否都是用同一個編譯器。例如Visual C++6.0可用作兩種語言的編譯器,可以嗎
VC++是集成後的開發環境,它已經集成了c和c++兩個的編譯器,用戶在使用的時候自然感覺像是一個;
c是gcc編譯器,c++是g++編譯器;對於不同的語言,編譯器是肯定不能通用的,編譯器是完全按照語言的特性、語法進行校驗、監測等操作的。。。。
比如c++里的類,你用c的編譯器肯定識別不了。。當然c++號稱是深度匹配c語言的,但是像c語言中的printf等輸入輸出函數,c++也是不能識別的。。
⑧ c++各種編譯器有什麼不同,應該不存在哪種編譯器最好的說法吧是不是只要學會用一種編譯器就可以了
gcc過去是指gnu組織的c語言編譯器,
現在gcc包括gcc命令在內都是gnu的各種語言的編譯器集。
在類linux環境輸入gcc可以指定編譯各種語言。c/c++,objc,ada,pascal,d,fortran等等
g++是專指gnu c++的編譯器,屬於gcc的一個編譯器。
而且要指出g++, dev c++, codeblocks, mingw,等等其實都是在用gcc編譯器中c/c++的部分。
各適合做什麼?
vc++在win下優勢最強,在x86指令下性能優化、標准支持是最好的之一,性能僅次於intel cc,但綜合性能最強。
borland c++,現在已經被c++ builder 2012取代了。這個版本的優勢也是同vc++類似,在win加x86的cpu下。特別之處是豐富的組件和快捷向導方案,自動生成代碼很多。做常用的網路、資料庫,桌面應用,很多時候都不用敲什麼代碼,直接滑鼠一陣拖拉就出來了,適合做又快又臟的應用。性能優化不如vc++
gcc是開源軟體的核心組件,linux/unix,全靠它編譯,支持幾乎世上所有的32位以上晶元,什麼手機、龍芯、pc,power pc, arms,大設備小設備都靠它。最樸素,但性能強大。適用於任何需要計算的場合。經過多個巨頭砸巨資優化過的編譯器,性能是一流的。移植性一流。標准化程度也是一流。就是開發工具—打字碼字的工具IDE,沒有像前2個那樣商業化,。
⑨ 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下編譯。
⑩ 不同的單片機如(stc AT PIC) 他們的編譯器是否一樣,還是要到生產廠家要的編譯器才可以把程序編進單片機里
用VC++6.0肯定不行的,用KEILC可以,基本上所有的單片機都可以用KEILC編譯。至於下載到單片機那就不一樣了,PIC有廠家提供的MPLAB ICD,STC也有廠家提供的專用下載軟體。還有部分晶元可用通用編程器寫入晶元的。