- 相關(guān)推薦
C語言編譯預(yù)處理和動(dòng)態(tài)存儲(chǔ)分配
引導(dǎo)語:你知道編譯預(yù)處理和動(dòng)態(tài)存儲(chǔ)分配是什么意思嗎?以下是百分網(wǎng)小編分享給大家的C語言編譯預(yù)處理和動(dòng)態(tài)存儲(chǔ)分配,歡迎大家閱讀學(xué)習(xí)!
1.1宏定義(不帶參數(shù)的宏定義,帶參數(shù)的宏定義)
1.編譯預(yù)處理就是對(duì)C源程序進(jìn)行編譯前,由″編譯預(yù)處理程序″對(duì)預(yù)處理命令行進(jìn)行處理的過程。
2.C語言中,凡是以″#″開頭的行,都稱為″編譯預(yù)處理″命令行。C語言中的編譯預(yù)處命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。這些預(yù)處理命令組成的預(yù)處理命令行必須在一行的開頭以″#″號(hào)開始,每行的未尾不得加″;″號(hào),以區(qū)別于C語句、定義和說明語句。
3.不帶參數(shù)的宏定義:命令的一般形式為:
#define標(biāo)識(shí)符字符串
定義中的″標(biāo)識(shí)符″為用戶定義的標(biāo)識(shí)符,稱為宏名。在預(yù)編譯時(shí),C預(yù)編譯程序?qū)⒊霈F(xiàn)的宏名替換成″字符串″的內(nèi)容,這一過程也稱為宏展開。
4.帶參數(shù)的宏定義:命令的一般形式為
#define宏名(形式參數(shù))字符串
定義中的″字符串″應(yīng)包含括號(hào)中所指定的形式參數(shù)。注意宏名與括號(hào)之間不要加空格,否則就成為不帶參數(shù)的宏定義了。
5.預(yù)編譯時(shí),遇到帶實(shí)參的宏名,則按命令行中指定的字符串從左到右進(jìn)行置換,原則是:遇到實(shí)參則以實(shí)參代替,非形參字符原樣保留,從而成展開后的內(nèi)容。
1.2“文件包含”處理
1.文件包含的一般形式為:
#include″頭文件名″
#include<頭文件名>
頭文件名一般由C語言提供,也可以是用戶自己編寫的,頭文件通常用.h作為后綴。
2.當(dāng)頭文件名用雙引號(hào)括起來時(shí),系統(tǒng)首先在使用此命令的文件所在的目錄中查找被包含的文件,找不到時(shí),再按系統(tǒng)指定的標(biāo)準(zhǔn)方式檢索其它目錄;當(dāng)頭文件名用尖括號(hào)括起來時(shí),則直接按系統(tǒng)指定的標(biāo)準(zhǔn)檢索方式查找被包含的文件。
3.預(yù)編譯時(shí),將被包含文件的內(nèi)容全部復(fù)制到包含文件中,這就是文件″包含處理″。
1.3條件編譯
C語言中的條件編譯命令可對(duì)源程序代碼的各部分有選擇地進(jìn)行編譯。條件編譯主要有如下3種使用格式:
使用格式1:
#ifdef標(biāo)識(shí)符
程序段1
#else
程序段2
#endif
使用格式2:
#ifndef標(biāo)識(shí)符
程序段1
#else
程序段2
#endif
使用格式3:
#if表達(dá)式
程序段1
#else
程序段2
#endif
使用格式1表示如果已定義了“標(biāo)識(shí)符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式2表示如沒有定義了“標(biāo)識(shí)符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式3表示如“表達(dá)式”的值為“真”時(shí),則編譯“程序段1”,否則編譯“程序段2”。
【C語言編譯預(yù)處理和動(dòng)態(tài)存儲(chǔ)分配】相關(guān)文章:
C語言的編碼編譯08-11
C語言編譯過程總結(jié)詳解10-31
C語言預(yù)處理概述09-30
C語言預(yù)處理知識(shí)06-13
C語言條件編譯分析實(shí)例08-18
有趣的C語言預(yù)處理07-29
最新C語言編譯過程總結(jié)詳解08-27
C語言中內(nèi)存分配問題09-13