第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C / C ++宏中的逗號(hào)

C / C ++宏中的逗號(hào)

C++ C
回首憶惘然 2019-08-27 15:43:27
C / C ++宏中的逗號(hào)假設(shè)我們有這樣的宏#define FOO(type,name) type name我們可以使用哪個(gè)FOO(int, int_var);但并不總是那么簡(jiǎn)單:FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2我們當(dāng)然可以這樣做: typedef std::map<int, int> map_int_int_t;  FOO(map_int_int_t, map_var); // OK這不是非常符合人體工程學(xué)的。必須處理類型不兼容的問(wèn)題。知道如何用宏來(lái)解決這個(gè)問(wèn)題嗎?
查看完整描述

3 回答

?
冉冉說(shuō)

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

如果你不能使用括號(hào)而你不喜歡Mike的SINGLE_ARG解決方案,那么只需定義一個(gè)COMMA:

#define COMMA ,FOO(std::map<int COMMA int>, map_var);

如果您想要對(duì)某些宏參數(shù)進(jìn)行字符串化,這也會(huì)有所幫助,如

#include <cstdio>#include <map>#include <typeinfo>#define STRV(...) #__VA_ARGS__#define COMMA ,#define FOO(type, bar) bar(STRV(type) \    " has typeid name \"%s\"", typeid(type).name())int main(){
    FOO(std::map<int COMMA int>, std::printf);}

打印std::map<int , int> has typeid name "St3mapIiiSt4lessIiESaISt4pairIKiiEEE"


查看完整回答
反對(duì) 回復(fù) 2019-08-27
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您的預(yù)處理器支持可變參數(shù)宏:


#define SINGLE_ARG(...) __VA_ARGS__

#define FOO(type,name) type name


FOO(SINGLE_ARG(std::map<int, int>), map_var);

否則,它有點(diǎn)單調(diào)乏味:


#define SINGLE_ARG2(A,B) A,B

#define SINGLE_ARG3(A,B,C) A,B,C

// as many as you'll need


FOO(SINGLE_ARG2(std::map<int, int>), map_var);


查看完整回答
反對(duì) 回復(fù) 2019-08-27
  • 3 回答
  • 0 關(guān)注
  • 1707 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)