C語言中常用預(yù)處理指令

轉(zhuǎn)載自 https://blog.csdn.net/farsight2009/article/details/58602886

姓名:張艷博 學號:17021223249

【嵌牛導(dǎo)讀】: C語言中常用預(yù)處理指令介紹

【嵌牛鼻子】: C語言? 預(yù)處理? 條件編譯

【嵌牛提問】: 怎樣了解C語言中常用預(yù)處理指令

【嵌牛正文】:

預(yù)處理:對一些預(yù)處理命令進行執(zhí)行的過程 預(yù)處理命令:頭文件包含;宏定義等,用#開頭的一些命令。 在C語言中預(yù)處理命令不會直接被編譯匾寝,而是在編譯這些預(yù)處理命令時,將這些預(yù)處理命令進行解析斟或,然后將預(yù)處理結(jié)果替換成真正的C語言能編譯的C語句。 如: #define PI 3.14 在編譯之前集嵌,預(yù)處理命令define會自動將程序中所有的PI替換成3.14.在編譯時程序中是不會在存在預(yù)處理命令的萝挤。

一)宏定義 (1)不帶參數(shù)的宏定義 如: #define PI 3.14 ①可以用宏定義來定義一個常量來設(shè)置一個數(shù)組的長度 #define arrr_len 100 int a[arrr_len] ②宏定義只是簡單的替換,而不做正確性的檢查纸淮,如果有#define 3.l4中的‘1’寫成‘l’也不會報錯平斩,他只是簡單的替換 如:#define N 3; 他就會將N替換成“3;”包括分號,因為宏定義咽块,會將符號常量的任何東西都將看成一個字符串并替換掉 ③通常宏定義出現(xiàn)在程序的開頭绘面,這個宏定義的作用域是本源文件。 ④如果想要解除宏定義的作用域侈沪,就在你需要解除的地方加上: #undef XXX ⑤宏定義可以在定義的時候就層層替換 如: #define PI 3.14 #define R 5; #define L 2*PI*R 注意:在宏定義的時候只是將這個看成字符串揭璃,做簡單的替換,而不會做運算亭罪。 ⑥ 在程序中如果在字符串中出現(xiàn)與宏名一樣的字符瘦馍,不會做替換 如: #define L = 2*3.14 Printf(“L=%d”,L); (2)帶參數(shù)的宏定義 (1)#define s(a,b) a*b S(2,3)替換成 2*3 (2) #define PI 3.14 #define S(r) PI*(r)*(r) 程序中:S(2+3) 替換成 3.14*2*2 (3) #define PI 3.14 #define S(r) PI*r*r 則s(2+3)可以替換成: 3.14*2+3*2+3 (4) (4)#define PI 3.14 #define S(r) PI*(r)*(r) 則s(2+3)可以替換成: 3.14*(2+3)*(2+3) (5)#define D "%d" #define D1 "\n" #define D2 D D D1 printf(D2,5,6); 等價于 printf(“%d” “%d” “\n”,5,6)等價printf(“%d%d\n”,5应役,6)

二) 頭文件包含 #include 或者 #include “xxxx.h” 頭文件包含的使用方式: ①可以將多文件編程的所有頭文件專門寫入一個文件情组,然后在每一個文件中引用這個文件即可燥筷。 ② 專門在一個文件中將所有類型的printf利用宏定義表示,只需要在每一個文件中引入這個頭文件即可院崇。 注意: ①如果在文件1要包含文件2肆氓,而文件2要用到文件3;而文件2只是被文件1包含時,只需要在文件1中包含文件2和文件3底瓣,并且文件3的包含在文件2的前面谢揪。 ②文件1包含文件2,文件2包含文件3捐凭,只需要在相應(yīng)的文件中包含該文件即可拨扶。 ③ 如果包含的頭文件不再當前目錄中,就需要指定路徑 #include “D:\works\daima\farmat.h”

三) 條件編譯 定義:在C源碼中茁肠,基本上所有的代碼都要參與編譯的過程患民,編譯也是耗費時間的過程,因此我們在編譯大量的C源碼時官套,可以根據(jù)需要對一些源碼進行編譯 #define 標識符 1 #ifdef 標識符 程序段1; #else 程序段2; #endif (紅色的部分是可選部分酒奶,是可以省略的) 作用:如果ifdef后面的標識符是被#define定義過蚁孔,則程序段1將會被編譯奶赔,否則程序段2將會被編譯。 例子: #include #define int_16 int main(int argc, char *argv[]) { #ifdef int_32 printf("int is:32"); #else printf("int is:16"); #endif return 0; } 注意:#define int_32這個宏杠氢,后面可以是任意的字符站刑,符號”前伲或者什么都沒有绞旅。 #define 標識符 #ifndef 標識符 程序段1; #else 程序段2; #endif (紅色的部分是可選部分,是可以省略的) (1) #if 表常量達式 程序段1; #else 程序段2; #endif (紅色的部分是可選部分温艇,是可以省略的) (2)嵌套 #if 表常量達式1 程序段1; #else #if 表常量達式2 程序段2; #else 程序段3; #endif #endif (5)#if 表常量達式1 語句段1; #elif 表常量達式2 語句段2; #elif 表常量達式3 語句段3 #else 語句段4 #endif 四)C語言的內(nèi)嵌宏 C語言的內(nèi)嵌宏 C語言的內(nèi)嵌宏 __DATE__ :編譯器當前編譯此源文件的日期 __FILE__:當前源文件的文件名 __LINE__:當前語句所在代碼的行號(調(diào)試很重要) __func__當前語句所在源碼的哪一個函數(shù)中

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末因悲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子勺爱,更是在濱河造成了極大的恐慌晃琳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琐鲁,死亡現(xiàn)場離奇詭異卫旱,居然都是意外死亡,警方通過查閱死者的電腦和手機围段,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門顾翼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奈泪,你說我怎么就攤上這事适贸【姆迹” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵拜姿,是天一觀的道長耗绿。 經(jīng)常有香客問我,道長砾隅,這世上最難降的妖魔是什么误阻? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮晴埂,結(jié)果婚禮上究反,老公的妹妹穿的比我還像新娘。我一直安慰自己儒洛,他們只是感情好精耐,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著琅锻,像睡著了一般卦停。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恼蓬,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天惊完,我揣著相機與錄音,去河邊找鬼处硬。 笑死小槐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的荷辕。 我是一名探鬼主播凿跳,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疮方!你這毒婦竟也來了控嗜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤骡显,失蹤者是張志新(化名)和其女友劉穎疆栏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟆盐,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡承边,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了石挂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片博助。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痹愚,靈堂內(nèi)的尸體忽然破棺而出富岳,到底是詐尸還是另有隱情蛔糯,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布窖式,位于F島的核電站蚁飒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏萝喘。R本人自食惡果不足惜淮逻,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阁簸。 院中可真熱鬧爬早,春花似錦、人聲如沸启妹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饶米。三九已至桨啃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間檬输,已是汗流浹背照瘾。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留褪猛,地道東北人网杆。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓羹饰,卻偏偏與公主長得像伊滋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子队秩,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 目錄 一.預(yù)處理的工作方式... 3 1.1.預(yù)處理的功能... 3 1.2預(yù)處理的工作方式... 3 二.預(yù)處理...
    朱森閱讀 1,355評論 0 2
  • 預(yù)處理在C語言中笑旺,以“#”號 開頭的是預(yù)處理命令。例如馍资,如包含命令#include 筒主,宏定義 命令#define...
    Eric_Hunter閱讀 600評論 0 1
  • 在實際開發(fā)中,有時候在編譯之前還需要對源文件進行簡單的處理鸟蟹。例如乌妙,我們希望自己的程序在Windows和Linux下...
    凡眼觀世界閱讀 847評論 1 0
  • C中的預(yù)編譯宏定義 2009-02-10 作者: infobillows 來源:網(wǎng)絡(luò) 在將一個C源程序轉(zhuǎn)換為可執(zhí)行...
    白水灬煮一切閱讀 1,581評論 0 5
  • 1 今天在22:30開始了2017年4月4日的檢視,完成了當天的檢視建钥,對于自我管理而言藤韵,這是一個正確的調(diào)整 2 今...
    LiHongxi閱讀 97評論 0 0