日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

几个预编译指令的用法

發(fā)布時(shí)間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几个预编译指令的用法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

*.幾個(gè)預(yù)編譯指令的用法

#??????? 字符串化運(yùn)算符,其主要效果是把參數(shù)的名字轉(zhuǎn)換為字符串。

Example:???

//1.?*.h中定義

#defineSTRINGLIZE(ivalue) ?#ivalue

// *.cpp中定義

CStringstrTmp = STRINGLIZE(2);

AfxMessageBox(strTmp);

// 結(jié)果是:彈出消息框中顯示2,說(shuō)明可以變成字符串

?

// 2.

#defineSTRINGLIZE(ivalue) printf(#ivalue " is: %d", ivalue)
???????????? // 使用
????????????STRINGLIZE(2);

// 結(jié)果是:2 is: 2,將ivalue的值與后面的字符串合并成一個(gè)字符串了

?

// 注:以下這情況使用時(shí)的結(jié)果會(huì)有不同

int ?a = 2;

STRINGLIZE(a);

// 1. 結(jié)果是:彈出消息框中顯示a

// 2. 結(jié)果是:a is: 2

注意:預(yù)處理的意思就是在編譯運(yùn)行前按字面處理,

##?????? 粘貼運(yùn)算符,即它先進(jìn)行宏替換,再進(jìn)行連接。

Example:??

#defineMACR1 printf("MACR1 is invoked.")

#defineMACR2 printf("MACR2 is invoked.")
????????????#define MAKE_MACR(n) MACR ## n

// 使用時(shí)

MAKE_MACR(2);// -->相當(dāng)于調(diào)用了宏MACR2

// 結(jié)果是:MACR2 isinvoked.

?

// 2.

#defineSTRINGLIZE(ivalue) TRACE("ivalue is: %d", ivalue##ivalue)

STRINGLIZE(2);

// 2. 結(jié)果是:ivalueis: 22

// 3.

int a =2;

STRINGLIZE(a);

// 3. 結(jié)果是:errorC2065: 'aa' : undeclared identifier

#@?????? 字符化運(yùn)算符

Example:???#defineCHARIZEIT(x) #@x

// 使用

char?c= CHARIZEIT(z);

// 結(jié)果是:c = 'z'

#include包含一個(gè)源代碼文件

Example:#include /#include "my.h"/#include "t.c"

#define?定義宏

Example:#define MAX_NUM 10/#define?max(x,y)?(x) > (y) ? (x) : (y);

#define可以替代多行的代碼,例如MFC中的宏定義:
????????????#define?MACRO(arg1,?arg2)?do?{?\
??????????????語(yǔ)句;?\

}while(條件)?
?????????? 關(guān)鍵是要在每一個(gè)換行的時(shí)候加上一個(gè)"\"。

#undef??取消已定義的宏

#if?????如果給定條件為真,則編譯下面代碼

#ifdef??如果宏已經(jīng)定義,則編譯下面代碼

#ifndef?如果宏沒(méi)有定義,則編譯下面代碼

#elif???如果前面的#if給定條件不為真,當(dāng)前條件為真,則編譯下面代碼

#endif??結(jié)束一個(gè)#if/#ifdef/#ifndef...#else條件編譯塊

#error??停止編譯并顯示錯(cuò)誤信息

#line???指令可以改變編譯器用來(lái)指出警告和錯(cuò)誤信息的文件號(hào)和行號(hào)。

#pragma?指令沒(méi)有正式的定義。編譯器可以自定義其用途。

?

超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的几个预编译指令的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。