久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > C語言中(zhong)常用預處(chu)理指令

C語言中(zhong)常用(yong)預處(chu)理指令(ling) 時間:2018-09-27     ; 來源:未知

 預(yu)(yu)處理(li):對一些預(yu)(yu)處理(li)命令進(jin)行(xing)執行(xing)的過(guo)程

預(yu)處(chu)理命令:頭(tou)(tou)文件包含;宏定義(yi)等,用#開頭(tou)(tou)的一些命令。

本文引用地址://fsbing.cn/emb/Column/7467.html

在C語言(yan)中預(yu)處理(li)命令不會直接(jie)被編(bian)譯(yi),而是在編(bian)譯(yi)這些(xie)預(yu)處理(li)命令時,將這些(xie)預(yu)處理(li)命令進行解析,然后(hou)將預(yu)處理(li)結果替換成真正的(de)C語言(yan)能編(bian)譯(yi)的(de)C語句。

如(ru): #define PI 3.14

在(zai)編譯之前,預處理命令define會(hui)自動將(jiang)程序中(zhong)所有的PI替換成(cheng)3.14.在(zai)編譯時程序中(zhong)是(shi)不(bu)會(hui)在(zai)存在(zai)預處理命令的。

一)宏定義

(1)不帶參數的宏定義 如: #define PI 3.14

①可以用(yong)宏(hong)定義(yi)來(lai)定義(yi)一(yi)(yi)個常(chang)量(liang)來(lai)設置一(yi)(yi)個數組的長度

#define arrr_len 100 int a[arrr_len]

②宏定義(yi)只是(shi)簡(jian)單的替換,而不做(zuo)正(zheng)確(que)性的檢查,如(ru)果(guo)有(you)#define 3.l4中的‘1’寫成‘l’也不會(hui)報錯(cuo),他(ta)只是(shi)簡(jian)單的替換

如(ru):#define N 3; 他(ta)就會(hui)將(jiang)(jiang)N替換成(cheng)“3;”包括分號,因為宏定義,會(hui)將(jiang)(jiang)符(fu)(fu)號常量的任何(he)東西都將(jiang)(jiang)看成(cheng)一(yi)個字符(fu)(fu)串并(bing)替換掉

③通(tong)常宏定義出現在程(cheng)序的開(kai)頭,這個宏定義的作(zuo)用域是本源文件。

④如果想要(yao)解除(chu)宏定義的(de)作用域,就在你需要(yao)解除(chu)的(de)地方加上: #undef XXX

⑤宏(hong)定義可以在(zai)定義的時候就(jiu)層層替換

如(ru): #define PI 3.14

#define R 5;

#define L 2*PI*R

注意:在宏定義的時候只是將這個看成字(zi)符串,做(zuo)簡單的替換,而不會做(zuo)運算(suan)。

⑥ 在程序(xu)中(zhong)如(ru)果(guo)在字符(fu)串中(zhong)出現與宏(hong)名一樣的字符(fu),不會做替換

如: #define L = 2*3.14

Printf(“L=%d”,L);

(2)帶參數的宏定義

(1)#define s(a,b) a*b

S(2,3)替換成 2*3

(2) #define PI 3.14

#define S(r) PI*(r)*(r)

程序(xu)中:S(2+3) 替換成(cheng) 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); 等(deng)價(jia)(jia)于(yu) printf(“%d” “%d” “\n”,5,6)等(deng)價(jia)(jia)printf(“%d%d\n”,5,6)

二) 頭文件包含

#include 或者 #include “xxxx.h”

頭文件包含的(de)使用方(fang)式:

①可(ke)以將多文(wen)(wen)(wen)件(jian)編程(cheng)的所有(you)頭文(wen)(wen)(wen)件(jian)專門寫入一(yi)(yi)個(ge)文(wen)(wen)(wen)件(jian),然后在每一(yi)(yi)個(ge)文(wen)(wen)(wen)件(jian)中引用這個(ge)文(wen)(wen)(wen)件(jian)即可(ke)。

② 專門在(zai)一(yi)個(ge)(ge)文(wen)件(jian)中(zhong)將所有(you)類型的printf利用宏定義表示,只(zhi)需要在(zai)每(mei)一(yi)個(ge)(ge)文(wen)件(jian)中(zhong)引入這(zhe)個(ge)(ge)頭文(wen)件(jian)即可(ke)。

注意:

①如(ru)果在(zai)文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)1要包含文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)2,而文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)2要用到(dao)文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)3;而文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)2只是被文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)1包含時(shi),只需要在(zai)文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)1中(zhong)包含文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)2和文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)3,并且文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)3的包含在(zai)文(wen)(wen)件(jian)(jian)(jian)(jian)(jian)(jian)2的前面。

②文件(jian)(jian)1包含文件(jian)(jian)2,文件(jian)(jian)2包含文件(jian)(jian)3,只需要在相應的文件(jian)(jian)中包含該文件(jian)(jian)即可。

③ 如果包(bao)含的頭文件不再當前目錄(lu)中,就需(xu)要(yao)指(zhi)定路徑

#include “D:\works\daima\farmat.h”

三) 條件編譯

定義:在C源(yuan)碼中,基本上所有的代碼都要(yao)參與(yu)編譯的過(guo)(guo)程(cheng),編譯也是耗費時(shi)間的過(guo)(guo)程(cheng),因此我們在編譯大量的C源(yuan)碼時(shi),可以(yi)根(gen)據需要(yao)對一些(xie)源(yuan)碼進行編譯

#define 標(biao)識符 1

#ifdef 標識符(fu)

程序段1;

#else

程序段2;

#endif

(紅色(se)的部(bu)分是可選部(bu)分,是可以省略的)

作用:如果ifdef后面的標識符(fu)是被#define定義過,則(ze)程(cheng)序(xu)段1將(jiang)會被編譯,否則(ze)程(cheng)序(xu)段2將(jiang)會被編譯。

例子:

#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;

}

注(zhu)意:#define int_32這個宏,后面可以是任意的字符(fu),符(fu)號(hao)。或者什(shen)么都(dou)沒(mei)有(you)。

#define 標識符

#ifndef 標識符

程序段1;

#else

程序段2;

#endif

(紅色的部分是可選部分,是可以省(sheng)略的)

(1)

#if 表常量(liang)達式

程序段1;

#else

程序段2;

#endif

(紅色的(de)部分是可選(xuan)部分,是可以省略的(de))

(2)嵌套

#if 表常量達式1

程序段1;

#else

#if 表常量達式2

程序段2;

#else

程序段3;

#endif

#endif

(5)#if 表常量(liang)達式1

語句段1;

#elif 表(biao)常量達式2

語句段2;

#elif 表(biao)常量達式3

語句段3

#else

語句段4

#endif

四)C語言的內嵌宏

C語言的內嵌宏

C語言的內嵌宏

__DATE__ :編譯器當(dang)前(qian)編譯此源(yuan)文件的(de)日期(qi)

__FILE__:當前(qian)源文(wen)(wen)件(jian)的文(wen)(wen)件(jian)名

__LINE__:當(dang)前(qian)語(yu)句所在代碼的行(xing)號(hao)(調試很重要(yao))

__func__當前語句所在源(yuan)碼(ma)的哪一個函數中

上一篇:樹的存儲結構

下一篇:Intel Edison 基礎開發之配置第一個小程序

熱點文章推薦
華清(qing)學員就業(ye)榜單(dan)
高薪(xin)學員經驗分享(xiang)
熱點新(xin)聞推(tui)薦
前臺專線(xian):010-82525158 企業培(pei)訓(xun)洽談專線:010-82525379 院校合作(zuo)洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部