最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++如何在變量前面加#

 更新時(shí)間:2023年08月07日 15:01:16   作者:眼中皆星辰  
這篇文章主要介紹了C++如何在變量前面加#問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++中變量前面加#

C++中變量前面加#的作用為把變量字符串化。

看如下的幾個(gè)例子

例1:代碼如下

#include <iostream>
using namespace std;
#define operation(NAME) cout<<#NAME<<" = "<<NAME<<endl;
int main()
{
    int AB_CD=1;
    operation(AB_CD);
}

結(jié)果如下:

例2:代碼如下

#include <iostream>
#include<string.h>
using namespace std;
#define operation(NAME) string a=#NAME;
int main()
{
    operation(AB_CD);
    cout << a << endl;
}

結(jié)果如下:

C++中#(一個(gè)#號(hào))和##(兩個(gè)#號(hào))的用法和作用

關(guān)于一個(gè)#號(hào)

在C語(yǔ)言的宏中,#的功能是將其后面的宏參數(shù)進(jìn)行字符串化操作, 簡(jiǎn)單說(shuō)就是對(duì)他所引用的宏變量通過(guò)替換后再其左右各加上一個(gè)雙引用。

例子:

# define WARNIF(EXP) \
do{ \
? ? if (EXP) \
? ? { ? ?\ ? ?
? ? ? ? fprintf(stderr, "warning:" #EXP "\n"); \
? ? } ? \ ? ?
}while(0) ? ?

在實(shí)際使用中會(huì)出現(xiàn)下面所示的替換過(guò)程:

WARN_IF(div == 0); 被替換成以下代碼
do{
? ? if (div == 0)?
? ? { ? ? ? ?
? ? ? ? fprintf(stderr, "warning:" "div == 0" "\n");?
? ? } ? ? ??
}while(0)

關(guān)于兩個(gè)#號(hào)

##被稱為連接符,用來(lái)將兩個(gè)Token鏈接成一個(gè)Token.注意這里的連接的對(duì)象時(shí)Token就行, 而不一定是宏的變量。比如你要做一個(gè)菜單項(xiàng)命令名和函數(shù)指針組成的結(jié)構(gòu)體的數(shù)組,并且希望在函數(shù)和菜單項(xiàng)命令名直

接有直觀的名字上的關(guān)系, 那么下面的代碼就非常實(shí)用

struct command
{
? ? char *name;
? ? void (*function)(void);
};
#define COMMAND(NAME){NAME, NAME##_command}

然后就用一些預(yù)定義好的命令來(lái)方便的初始化一個(gè)command結(jié)構(gòu)的數(shù)據(jù)了:

struct command commands[] = {
????COMMAND(quit),
????COMMAND(help),
????...
}

COMMAND宏在這里充當(dāng)一個(gè)代碼生成器的作用,這樣可以在一定程度上減少代碼的密度, 間接的也可以減少粗心所造成的錯(cuò)誤。

我們還可以n個(gè)##符號(hào)鏈接n+1個(gè)Token,這個(gè)特性也是#符號(hào)所不具備的。

例如:

#define LINK_MULTIPLE(a, b, c, d) a##_##b##_##c##_###d
typedef struct_record_type LINK_MULTIPLE(name, company, position, salary);
//展開(kāi)內(nèi)容為 : typedef struct_record_type name_company_position_salary;

關(guān)于...的使用

...在C語(yǔ)言中被稱為變參宏 

#define myprintf(templt, ...) ?fprintf(stderr, templt, ##__VA_ARGS__)

這是##這個(gè)連接符充當(dāng)?shù)淖饔镁褪钱?dāng)__VA_ARGS__為空的時(shí)候, 消除前面的那個(gè)逗號(hào)。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • VS2022新建項(xiàng)目時(shí)沒(méi)有ASP.NET Web應(yīng)用程序(.NET Framework)

    VS2022新建項(xiàng)目時(shí)沒(méi)有ASP.NET Web應(yīng)用程序(.NET Framework)

    本文主要介紹了VS2022新建項(xiàng)目時(shí)沒(méi)有ASP.NET Web應(yīng)用程序的解決,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • C語(yǔ)言讀取BMP圖像數(shù)據(jù)的源碼

    C語(yǔ)言讀取BMP圖像數(shù)據(jù)的源碼

    這篇文章主要介紹了C語(yǔ)言讀取BMP圖像數(shù)據(jù)的源碼,需要的朋友可以參考下
    2013-03-03
  • C/C++中時(shí)間庫(kù)函數(shù)的使用詳解

    C/C++中時(shí)間庫(kù)函數(shù)的使用詳解

    這篇文章主要為大家詳細(xì)介紹了C/C++中的時(shí)間相關(guān)知識(shí)總結(jié),例如時(shí)間庫(kù)函數(shù)的使用以及獲取本地時(shí)間的不同方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-11-11
  • 基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲

    基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲

    windows自帶的游戲《掃雷》是陪伴了無(wú)數(shù)人的經(jīng)典游戲,本文將利用C語(yǔ)言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • C語(yǔ)言使用普通循環(huán)方法和遞歸求斐波那契序列示例代碼

    C語(yǔ)言使用普通循環(huán)方法和遞歸求斐波那契序列示例代碼

    這篇文章主要介紹了C語(yǔ)言使用普通循環(huán)方法和遞歸求斐波那契序列示例代碼,大家參考使用吧
    2013-11-11
  • C++11返回類型后置語(yǔ)法的使用示例

    C++11返回類型后置語(yǔ)法的使用示例

    本篇文章主要介紹了C++11返回類型后置語(yǔ)法的使用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • C++面試之你知道有哪些可執(zhí)行體嗎

    C++面試之你知道有哪些可執(zhí)行體嗎

    可執(zhí)行體其實(shí)也叫可調(diào)用對(duì)象,這也是面試常常會(huì)考到的問(wèn)題,這篇文章就來(lái)和大家詳細(xì)講講C++中的可執(zhí)行體,感興趣的小伙伴可以了解一下
    2023-06-06
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • QT的幾種QMap插入順序說(shuō)明

    QT的幾種QMap插入順序說(shuō)明

    本文主要介紹了QT的幾種QMap插入順序說(shuō)明,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • 用VScode編寫(xiě)C++大型項(xiàng)目的方法步驟

    用VScode編寫(xiě)C++大型項(xiàng)目的方法步驟

    本文主要介紹了用VScode編寫(xiě)C++大型項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論

阳山县| 阳西县| 庆城县| 垦利县| 类乌齐县| 汕尾市| 长沙市| 闵行区| 元江| 龙游县| 思南县| 射洪县| 武宣县| 安西县| 许昌县| 武鸣县| 垫江县| 梓潼县| 朔州市| 铜鼓县| 额尔古纳市| 桂林市| 酉阳| 平果县| 疏勒县| 南涧| 温州市| 开江县| 定西市| 天水市| 德令哈市| 海淀区| 马山县| 平和县| 凤台县| 巴彦淖尔市| 博爱县| 绍兴市| 贵德县| 义马市| 丁青县|