__typeof__() 、 __typeof() 、 typeof()的区别
- 摘要:__typeof__()和__typeof()和typeof()都是C的擴(kuò)展,且意思是相同的,標(biāo)準(zhǔn)C不包括這樣的運(yùn)算符標(biāo)準(zhǔn)C:ANSIC,ISOC,StandardCC89C99C11這些其實(shí)都是一個(gè)東西,只是不同時(shí)期的叫法。GNUC:(革奴C)支持標(biāo)準(zhǔn)C的基礎(chǔ)上做了一些C擴(kuò)展在標(biāo)準(zhǔn)C中寫擴(kuò)展是以__開頭,所以在標(biāo)準(zhǔn)C中要寫成__typeof()或__typeof__()在GNUC中支持直接寫typeof()或者_(dá)_typeof()或者_(dá)_typeof__()iOS使用Cla
-
__typeof__()和 __typeof()和 typeof() 都是 C 的擴(kuò)展,且意思是相同的,標(biāo)準(zhǔn)C不包括這樣的運(yùn)算符
??
??
?標(biāo)準(zhǔn)C: ANSI C ,ISO C, Standard C C89 C99 C11 這些其實(shí)都是一個(gè)東西,只是不同時(shí)期的叫法。
?GNU C: (革奴 C) 支持標(biāo)準(zhǔn)C的基礎(chǔ)上做了一些C擴(kuò)展
??
?在標(biāo)準(zhǔn)C 中寫擴(kuò)展是 以 __ 開頭,所以在標(biāo)準(zhǔn)C中要寫成 __typeof() 或 __typeof__()
?在GNU C 中支持直接寫 typeof() 或者 __typeof() 或者 __typeof__()
iOS 使用Clang編譯器,默認(rèn)用的C語言版本是GNU99 ,并且允許'asm'inline''typeof'的選項(xiàng)設(shè)置為Yes。
?因此使用typeof() 完全ok。
?如果以后用于編譯的C語言版本 不是GNU C了,你就炸了。直接報(bào)錯(cuò)
做個(gè)簡單的驗(yàn)證:
?1.Xcode中新建一個(gè)命令行項(xiàng)目 (注意創(chuàng)建項(xiàng)目時(shí),語言選的是C語言,不是OC。 如果選擇OC創(chuàng)建OC項(xiàng)目的話,當(dāng)選擇標(biāo)準(zhǔn)C的時(shí)候,系統(tǒng)的有些類就直接報(bào)錯(cuò),看不到typeof的錯(cuò)誤),(下圖,可以看到默認(rèn)是GNU99 )
?2.在main.m中寫 typeof(),cmd + R 正確運(yùn)行,控制臺(tái)打印。
? ?3.將Xcode中的 GNU C 設(shè)置 成 標(biāo)準(zhǔn)C
? ?運(yùn)行后發(fā)現(xiàn)報(bào)錯(cuò)了
?總結(jié):如果希望更安全,建議使用__typeof__() 或者 __typeof()這樣,如果用于編譯的C語言版本發(fā)生變化,也不會(huì)受到影響。
總結(jié)
以上是生活随笔為你收集整理的__typeof__() 、 __typeof() 、 typeof()的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle创建多个游标,Oracle—
- 下一篇: 2021年广西艺术高考成绩查询,2021