iOS #pragma clang

#pragma clang

1勘伺、 #pragma clang diagnostic

使用這個(gè)指令可使編譯器 禁用、開(kāi)啟脖咐、改變代碼在編譯中出現(xiàn)的錯(cuò)誤或警報(bào)断箫。例如:你可以在方法前使用編譯指令瓜浸,取消方法中的警報(bào)澳淑。

1)#pragma clang diagnostic ignored

#pragma clang diagnostic ignored "-Wname"
忽略名稱為 name 引起的警報(bào),編譯器不再提示警報(bào)信息插佛。例如 “unused”杠巡。

2) #pragma clang diagnostic warning

#pragma clang diagnostic warning "-Wname"
與上一條相反,對(duì)于由 name 引起的警報(bào)雇寇。編譯器將給出警報(bào)提示。

3)#pragma clang diagnostic error

#pragma clang diagnostic error "-Wname"
代碼出現(xiàn) name 所指的問(wèn)題谢床,編譯器提示“Error”,編譯不過(guò)识腿。

4)#pragma clang diagnostic push, #pragma clang diagnostic pop

#pragma clang diagnostic push
#pragma clang diagnostic pop
#pragma clang diagnostic push 編譯器對(duì)哪些錯(cuò)誤給警報(bào)提示造壮,哪些錯(cuò)誤忽略警報(bào)提示,將此刻的狀態(tài)存儲(chǔ)起來(lái)耳璧,后續(xù)可將此設(shè)置狀態(tài)復(fù)原成箫。
#pragma clang diagnostic pop 恢復(fù)剛才利用 #pragma clang diagnostic push 存儲(chǔ)的狀態(tài)蹬昌。

2、使用例子


#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmultichar"
void foo1( void )
{
    __unused char c = (char) 'ab';
}
#pragma clang diagnostic pop

void foo2( void )
{
    __unused char c = (char) 'ab';
}

#pragma clang diagnostic ignored "-Wmultichar"   // 指令 A
#pragma clang diagnostic push                    // 指令 B
void foo3( void )
{
#pragma clang diagnostic error "-Wmultichar"     // 指令 C
    /* Here, the diagnostic message is elevated to error severity. */ 
    char c = (char) 'ab';
}     
#pragma clang diagnostic pop                     // 指令 D

void foo4( void )
{
    __unused char c = (char) 'ab';
}  
  • 由于 __unused char c = (char) 'ab';這句代碼皂贩,編譯器默認(rèn)給出warning: multi-character character constant [-Wmultichar]警報(bào)。

  • 方法 foo1 中昆汹,使用#pragma clang diagnostic ignored "-Wmultichar",foo1 中的代碼沒(méi)有編譯警報(bào)满粗。

  • 方法 foo2, 在 foo1 方法結(jié)束后,#pragma clang diagnostic pop 指令將剛才 #pragma clang diagnostic push 保存的狀態(tài)又恢復(fù)了,所以 foo2 有警報(bào)提示挤聘。

  • 方法 foo3,使用 #pragma clang diagnostic error "-Wmultichar" 指令组去,所以編譯器產(chǎn)生了 Error

  • 方法 foo4添怔, 在foo3 前后使用 指令 B & 指令 D湾戳,所以 指令 C 的作用域只作用只在 foo3 中广料。 foo3 之前的指令 指令 A指令 B 之前砾脑,所以 foo4指令 A 的作用域內(nèi), foo4 沒(méi)有編譯警報(bào)艾杏。

3 常用示例

  1. 對(duì)于編譯器不能識(shí)別的方法韧衣,取消編譯器警報(bào)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
    // 需要禁用警告的代碼
    [self performSelectorOnMainThread:@selector(updatePaddingConstraints) withObject:nil waitUntilDone:NO];
#pragma clang diagnostic pop
    

Reference

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市购桑,隨后出現(xiàn)的幾起案子畅铭,更是在濱河造成了極大的恐慌,老刑警劉巖勃蜘,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硕噩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缭贡,警方通過(guò)查閱死者的電腦和手機(jī)炉擅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阳惹,“玉大人谍失,你說(shuō)我怎么就攤上這事∮ㄌ溃” “怎么了快鱼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)纲岭。 經(jīng)常有香客問(wèn)我抹竹,道長(zhǎng),這世上最難降的妖魔是什么荒勇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任柒莉,我火速辦了婚禮,結(jié)果婚禮上沽翔,老公的妹妹穿的比我還像新娘兢孝。我一直安慰自己窿凤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布跨蟹。 她就那樣靜靜地躺著雳殊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窗轩。 梳的紋絲不亂的頭發(fā)上夯秃,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音痢艺,去河邊找鬼仓洼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛堤舒,可吹牛的內(nèi)容都是我干的色建。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舌缤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼箕戳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起国撵,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎介牙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體旨指,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年框都,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呵晨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谓罗,死狀恐怖季二,靈堂內(nèi)的尸體忽然破棺而出揭措,到底是詐尸還是另有隱情刻蚯,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布躬充,位于F島的核電站充甚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏伴找。R本人自食惡果不足惜傲霸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望穆役。 院中可真熱鬧梳凛,春花似錦、人聲如沸韧拒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厢蒜。三九已至,卻和暖如春斑鸦,著一層夾襖步出監(jiān)牢的瞬間草雕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工嘱巾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浓冒。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像闲擦,于是被迫代替她去往敵國(guó)和親场梆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容