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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++預(yù)處理器#定義關(guān)鍵字。是否符合標(biāo)準(zhǔn)?

C ++預(yù)處理器#定義關(guān)鍵字。是否符合標(biāo)準(zhǔn)?

C++
人到中年有點甜 2019-11-04 09:27:03
幫助解決有關(guān)bool和1的問題的評論中正在進(jìn)行的辯論:符合標(biāo)準(zhǔn)的C ++預(yù)處理程序可以允許使用它#define來重新定義語言關(guān)鍵字嗎?如果是這樣,那么符合標(biāo)準(zhǔn)的C ++預(yù)處理器必須允許嗎?如果C ++程序重新定義了語言關(guān)鍵字,那么該程序本身是否符合標(biāo)準(zhǔn)?
查看完整描述

3 回答

?
小怪獸愛吃肉

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

在C ++中,最接近禁止#define關(guān)鍵字的是§17.4.3.1.1/ 2,它僅在包含標(biāo)準(zhǔn)庫頭的翻譯單元中禁止使用它:


包含頭的翻譯單元不得包含任何定義該頭中聲明或定義的名稱的宏。這樣的翻譯單元也不應(yīng)為詞法上與關(guān)鍵字相同的名稱定義宏。


該段的第二句在C ++ 0x中已更改為完全禁止#define關(guān)鍵字(C ++ 0x FCD§17.6.3.3.1):


翻譯單元不得在詞義上與關(guān)鍵字相同的#define或#undef名稱。



查看完整回答
反對 回復(fù) 2019-11-04
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊

從2005-10-19 C ++工作草案開始工作(因為我沒有方便使用的標(biāo)準(zhǔn)):


第16.3節(jié)定義了文法#define是#define identifier replacement-list-newline(類似對象的宏)或開頭幾種結(jié)構(gòu)中的一個#define identifier lparen(函數(shù)宏)。identifier在2.10節(jié)中將定義為identifier-nondigit | identifier identifier-nondigit | identifier digit。2.11節(jié)指出,標(biāo)識符的某些列表在編譯的第7階段(第2.1節(jié))被無條件地視為關(guān)鍵字,因此,我得出結(jié)論,因此在第4階段(預(yù)處理器擴(kuò)展)中并未對它們進(jìn)行特殊處理。因此,似乎該標(biāo)準(zhǔn)要求預(yù)處理器允許您重新定義語言關(guān)鍵字(在2.11節(jié)中列出)。


但是,預(yù)處理器具有自己的關(guān)鍵字,即defined,以及預(yù)定義的宏列表(第16.8節(jié))。第16.8節(jié)指出,如果您重新定義它們,則行為是不確定的,但并不禁止預(yù)處理器將它們識別為宏名。


查看完整回答
反對 回復(fù) 2019-11-04
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊

根據(jù)C ++ 11 [macro.names],這是不允許的:


翻譯單元#define或#undef關(guān)鍵詞,表3中列出的標(biāo)識符或7.6中描述的屬性標(biāo)記的名稱或詞法上不應(yīng)相同。


“表3中列出的標(biāo)識符”是final和override;屬性標(biāo)記是中的標(biāo)識符[[fallthrough]],依此類推。


該條款也仍然是最新標(biāo)準(zhǔn)。


查看完整回答
反對 回復(fù) 2019-11-04
  • 3 回答
  • 0 關(guān)注
  • 446 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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