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

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

typedef用法的必要性

typedef用法的必要性

一只萌萌小番薯 2019-04-13 08:45:25
在看cocos2d-x的源碼,發(fā)現(xiàn)很多地方有這樣的定義(源碼在這里):typedefstruct_AsyncStruct{std::stringfilename;CCObject*target;SEL_CallFuncOselector;inthandler;}AsyncStruct;我的問題是:為什么不直接這樣寫:structAsyncStruct{std::stringfilename;CCObject*target;SEL_CallFuncOselector;inthandler;}
查看完整描述

2 回答

?
冉冉說

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

C語言規(guī)定,變量定義要寫elaboratedtype,也就是說,對(duì)于structS{...}類型的變量定義要寫成structSs;,為了省掉這個(gè)struct,你就需要用typedefstructSS1來定義個(gè)名叫S1的elaboratedtype,然后你就可以直接用S1來定義變量了。
其實(shí)C標(biāo)準(zhǔn)中S和S1可以重名,也就是說你可以寫typedefstructSS,但有一些古老的編譯器不支持你這么寫,所以一般會(huì)換個(gè)名字比如typedefstruct_SS。
以上所述只針對(duì)C語言,C++基本沒這個(gè)問題(除了friend聲明)。
PS.對(duì)于像cocos2d-x這樣只能用在新編譯器上的C++庫,還這么寫只能說明作者其實(shí)根本沒明白為什么。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-13
?
MYYA

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

程序猿大多不想做重復(fù)的工作,你比較下下面兩段代碼:
structAsyncStruct{
inta;
intb;
};
structAsyncStructi;//定義一個(gè)變量
structAsyncStructj;//定義另外一個(gè)變量
typedefstruct_AsyncStruct{
inta;
intb;
}AsyncStruct;
AsyncStructi;//定義一個(gè)變量(這里不用再寫一個(gè)**struct**)
AsyncStructj;//定義另外一個(gè)變量(這里不用再寫一個(gè)**struct**)
如果是后者寫法:其他人也不用糾結(jié)定義一個(gè)AsyncStruct變量時(shí)要不要加struct~
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-13
  • 2 回答
  • 0 關(guān)注
  • 290 瀏覽
慕課專欄
更多

添加回答

舉報(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)