鍍金池/ 教程/ C/ C語(yǔ)言程序執(zhí)行流程
C語(yǔ)言printf()和scanf()函數(shù)
C語(yǔ)言strlen()函數(shù)
C語(yǔ)言指針
C語(yǔ)言ftell()函數(shù)
C語(yǔ)言#ifdef指令
C語(yǔ)言程序執(zhí)行流程
C語(yǔ)言歷史
C語(yǔ)言fprintf()和fscanf()函數(shù)
C語(yǔ)言#define指令
C語(yǔ)言#if指令
C語(yǔ)言將數(shù)組傳遞給函數(shù)
C語(yǔ)言指針的指針
C語(yǔ)言rewind()函數(shù)
C語(yǔ)言常量
C語(yǔ)言strcat()函數(shù)
C語(yǔ)言#ifndef指令
C語(yǔ)言continue語(yǔ)句
C語(yǔ)言注釋
C語(yǔ)言#include指令
C語(yǔ)言類型轉(zhuǎn)換
C語(yǔ)言strcpy()函數(shù)
C語(yǔ)言strlwr()函數(shù)
C語(yǔ)言while循環(huán)
C語(yǔ)言字符串
C語(yǔ)言strrev()函數(shù)
C語(yǔ)言gets()和puts()函數(shù)
C語(yǔ)言文件處理
C語(yǔ)言存儲(chǔ)分類
C語(yǔ)言運(yùn)算符
C語(yǔ)言數(shù)據(jù)類型
C語(yǔ)言strcmp()函數(shù)
C語(yǔ)言VS開(kāi)發(fā)環(huán)境安裝
C語(yǔ)言轉(zhuǎn)義序列
C語(yǔ)言第一個(gè)程序
C語(yǔ)言變量
C語(yǔ)言goto語(yǔ)句
C語(yǔ)言預(yù)處理器指令
C語(yǔ)言指針?biāo)阈g(shù)運(yùn)算
C語(yǔ)言數(shù)學(xué)函數(shù)
C語(yǔ)言二維數(shù)組
C語(yǔ)言for循環(huán)
C語(yǔ)言命令行參數(shù)
C語(yǔ)言通過(guò)值和引用函數(shù)
C語(yǔ)言fputs()和fgets()函數(shù)
C語(yǔ)言do-while循環(huán)
C語(yǔ)言結(jié)構(gòu)體數(shù)組
C語(yǔ)言循環(huán)
C語(yǔ)言#pragma指令
C語(yǔ)言關(guān)鍵字
C語(yǔ)言#error指令
C語(yǔ)言聯(lián)合體
C語(yǔ)言特點(diǎn)
C語(yǔ)言break語(yǔ)句
C語(yǔ)言遞歸
C語(yǔ)言函數(shù)
C語(yǔ)言結(jié)構(gòu)體
C語(yǔ)言switch語(yǔ)句
C語(yǔ)言結(jié)構(gòu)體嵌套
C語(yǔ)言fputc()和fgetc()函數(shù)
C語(yǔ)言fseek()函數(shù)
C語(yǔ)言字符串函數(shù)
C語(yǔ)言if-else語(yǔ)句
C語(yǔ)言教程
C語(yǔ)言宏
C語(yǔ)言數(shù)組
C語(yǔ)言strupr()函數(shù)
C語(yǔ)言#undef指令

C語(yǔ)言程序執(zhí)行流程

C語(yǔ)言程序執(zhí)行中的許多步驟。要了解C語(yǔ)言程序的流程,首先我們來(lái)看一個(gè)簡(jiǎn)單的程序。

源文件:simple.c 代碼 -

#include <stdio.h>  
void main(){  
    printf("Hello C Language\n");  
}

我們?cè)囍ㄟ^(guò)下面給出的圖示來(lái)了解上述程序的流程。

根據(jù)上面執(zhí)行流程,我們簡(jiǎn)要說(shuō)明每個(gè)階段的處理過(guò)程:

(1) C語(yǔ)言程序(源代碼)首先發(fā)送到預(yù)處理器(preprcessor)。預(yù)處理器負(fù)責(zé)將預(yù)處理指令轉(zhuǎn)換成各自的值。預(yù)處理器生成擴(kuò)展的源代碼(Expanded source code)。

(2)將擴(kuò)展源代碼(Expanded source code)發(fā)送給編譯器(Compiler),編譯代碼并將其轉(zhuǎn)換為匯編代碼。

(3) 匯編代碼(Assembly code)被發(fā)送到匯編器(Assembler),匯編代碼將其轉(zhuǎn)換成目標(biāo)代碼?,F(xiàn)在生成一個(gè)simple.obj文件。

(4)目標(biāo)代碼(Object Code)被發(fā)送到鏈接器(linker),鏈接到庫(kù),例如頭文件。 然后將其轉(zhuǎn)換為可執(zhí)行代碼。 將生成一個(gè)simple.exe文件。

(5)可執(zhí)行代碼發(fā)送到加載器(loader),將其加載到內(nèi)存中,然后執(zhí)行。 執(zhí)行后,輸出將發(fā)送到控制臺(tái)。