我第一個C程式 frist.c

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   ar   使用   strong   sp   

我第一個C程式 frist.c

1
2
3
4
5
6
7

?

#include?<stdio.h>

int?main(void)
{
????printf("這是第一個C程式!\n");
????return?0;
}

?

一、程式解釋

第一行#include?<stdio.h> 這是一個預先處理命令列

include是一個預先處理命令,意思是包含一個檔案到當前檔案

預先處理命令列都是以"#"開頭

<stdio.h> 指的standard input output 標準的輸入輸入

".h"指標頭檔(header files)主要包含函數的聲明,宏定義等,這個檔案主要包含以下輸入輸出的函數

<>指在系統路徑下尋找這個檔案,也可以替換為"stdio.h",指先在使用者目錄尋找,然後再在系統目錄尋找這個檔案

第二行空白行,為分割主要代碼和前面的預先處理,使代碼看著更有組織

第三行int?main(void) 這是C的主函數是函數的首部,所有C程式都是從這個函數開始執行,而且每個程式有且只能有一個main的定義。int 表示main函數的傳回值是int(整型),void說明這個main函數沒有參數。一個函數可以沒有參數但是後面的"()"小括弧不能省略。

第三行和第七行一對花括弧 "{}"這個表示函數體,其中的內容為函數實現代碼部分

第四行 printf("這是第一個C程式!\n"); 這句意思是調用printf函數在標準輸出裝置(螢幕)上輸出"這是第一個C程式!\n"這句話,最後的\n意思是斷行符號,輸出會換行。

第六行return?0;主函數返回一個0.主函數一般有作業系統調用執行,返回給作業系統一個0表示程式成功執行完成。

二、預先處理

????編譯前預先處理程式根據預先處理命令對C原始碼做一個初步處理,主要有宏替換、條件編譯和檔案包含。
在windows平台下可以使用VC的編譯器程式cl(直接使用cl命令需要在環境變數中添加cl路徑),在命令列下輸入 cl /P first.c 會成一個first.i檔案,這個就是預先處理後的檔案。開啟這檔案在最後會發現我們的代碼,這int main(void)之前多出很多代碼。主要就是把stdio.h這檔案包含了進來。

在linux下使用 gcc -E first.c -o first.i 命令可以查看預測到first.i中的結果。也是多了很多代碼,但是明顯和windows下的不一樣,這說明不同的預先處理程式處理的結果是不同的,除了包含stdio.h這個檔案外還會添加自己的一些東西。

三、編譯

將原始碼轉為組合語言,最佳化也在這一階段處理。最佳化選項可查看程式協助。

Windows 下 cl /FA first.c 會產生 first.asm、first.obj和first.exe,其中first.asm是編譯後產生的彙編代碼。Cl命令在這一步一次完成了編譯、彙編和串連,貌似沒有單獨編譯為彙編的命令。

Linux 下 gcc -S first.i 會產生 first.s這個彙編檔案。查看first.asm 和first.s他們是不同的。不同的編譯器和不同的平台產生的彙編代碼是不相同的。

四、彙編

????將彙編代碼轉換為機器的二進位語言。在上一步中直接進行了彙編和串連過程。

Linux下gcc -c first.s 則可以產生二進位first.o檔案。

五、連結

將產生的目標檔案,通過link程式連結產生平台可執行檔。Linux上的可執行檔在windows上是不能執行的,反之亦然。可執行檔是由他的檔案結構和許可權決定其是否能夠執行。而不是因為他的副檔名是exe。串連過程需要很多檔案庫檔案,不同平台也不同。Linux使用ld程式,windows使用link程式。具體使用請查看ld和link程式說明。

六、執行

????執行產生的可執行,在螢幕上輸出"這是第一個C程式!"

?

七、其他說明

gcc 和cl產生可執行檔,這個過程並不是單一的gcc和cl完成,而是由多個程式完成的。每個階段都有相應的處理常式。

gcc和cl編譯器有很多選項,可以查看其手冊。

我第一個C程式 frist.c

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.