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