小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

c 中的宏

 My鏡像站 2012-02-10

1、一些特殊的宏符號(hào):

#define VARIABLE_A(x) iTemp##x        //展開(kāi)后相當(dāng)于iTempx,##為連接符
#define VARIABLE_B(x) #@x            //展開(kāi)后相當(dāng)于'x',x只允許是單獨(dú)字符,#@是字符化符號(hào),后面的內(nèi)容是一個(gè)單獨(dú)的字符
#define VARIABLE_C(x) #x            //展開(kāi)后相當(dāng)于"x",x允許是多個(gè)字符,#是字符串化符號(hào),后面的內(nèi)容是字符串

如果一個(gè)宏定義很長(zhǎng),超出一行,可以在每行的后面使用續(xù)行符’/’。

2、預(yù)定義的宏

在C++標(biāo)準(zhǔn)中款規(guī)定了一些預(yù)定義的宏。也就是說(shuō),這些宏不需要開(kāi)發(fā)者定義,而是由預(yù)編譯器提供,開(kāi)發(fā)者只要使用即可。

__FILE__:當(dāng)前源代碼文件名的字符串文字

__LINE__:當(dāng)前源代碼中的行號(hào)的整數(shù)常量

__DATE__:進(jìn)行預(yù)處理的日期(“Mmm dd yyyy”形式的字符串文字)

__TIME__:源文件編譯時(shí)間,格式微“hh:mm:ss”

__func__:當(dāng)前所在函數(shù)名,在C++中為_(kāi)_FUNCTION__

注意:上述宏兩側(cè)都是兩道下劃線,而不是一道

3、宏指令

C/C++的宏指令都是在ANSI標(biāo)準(zhǔn)中的。以下是一些常見(jiàn)的宏指令:

①⑤⑥⑦⑧⑨#error

#error可以強(qiáng)迫編程程序停止編譯,用來(lái)在編譯期檢查環(huán)境是否符合要求或者與約束的條件發(fā)生了沖突。其使用格式是:

#error token-string

當(dāng)程序在編譯過(guò)程中遇到這個(gè)關(guān)鍵字,就會(huì)停止編譯,產(chǎn)生了一個(gè)錯(cuò)誤信息,并且輸出后面的token-string,例如:

#if !defined(__cplusplus)
#error C++ compiler required
#endif

上面這段代碼的意思是在編譯期檢查當(dāng)前是否是C++編程環(huán)境,如果不是,就定義#error,讓編譯器停止編譯。

②#include

#include使編譯程序?qū)?include所指向的源文件導(dǎo)入進(jìn)當(dāng)前的源文件,被包含的文件必須被尖括號(hào)或者引號(hào)包圍起來(lái)。

使用"#include”指令包含頭文件時(shí),其后的頭文件有兩種方式,一種是使用雙引號(hào),一種是使用尖括號(hào)。

如果文件名用尖括號(hào)括起來(lái),表面這個(gè)文件是一個(gè)工程或者C++標(biāo)準(zhǔn)庫(kù)頭文件。預(yù)編譯器會(huì)首先搜索在工程中預(yù)定義的目錄,然后搜索C++編譯器的安裝目錄。可以通過(guò)設(shè)置工程搜索路徑環(huán)境變量或者命令行選項(xiàng)來(lái)修改。

如果文件名用一對(duì)引號(hào)括起來(lái),則表面該文件是用戶提供的頭文件。預(yù)編譯器首先從當(dāng)前文件目錄開(kāi)始搜索,如果找不到,就從工程中定義的目錄和編譯器的安裝目錄查找。另外,也可以明確指定頭文件的路徑。例如包含c盤(pán)下的頭文件Header.h

#include “c:/Header.h”

注意:由于#include指令不是C++語(yǔ)句,所以在頭文件的字符串中,不必使用雙斜杠來(lái)間隔每一級(jí)路徑。

③#if,#else,#elif,#endif,#ifdef,#ifndef

#if,#else,#elif,#endif,#ifdef,#ifndef屬于條件編譯命令,可以對(duì)程序的各個(gè)部分有選擇的進(jìn)行編譯。對(duì)于前面 三個(gè)宏#if,#else,#elif,可以理解為if,else,和else if,#endif則表示這個(gè)條件編譯選擇的結(jié)束。

#ifdef判斷后面的標(biāo)識(shí)符是否被定義,通常都是指預(yù)定義的宏,#ifndef就是#ifdef的取反。

包含警衛(wèi):

所謂包含警衛(wèi)就是用一組宏命令將頭文件包起來(lái),使其不會(huì)被重復(fù)包含。例如:

#ifndef ANIMAL_H

#define ANIMAL_H

……

#endif

#ifndef定義在頭文件所有內(nèi)容之前,#endif是定義在所有內(nèi)容之后的,用預(yù)編譯命令#ifndef和#endif將整個(gè)頭文件內(nèi)容包起來(lái)。這樣頭文件被不同文件包含時(shí)就不會(huì)有編譯錯(cuò)誤了。通常的習(xí)慣是在所有的頭文件中都加入包含警衛(wèi)。

關(guān)鍵字#prama once可以取到相同的作用(仍然有差別)。

④#undef

#undef命令用來(lái)取消前面定義過(guò)的宏名

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多