支持了新標準,這個可以用#pragma編譯器指定
除了已經有的__line____file__以外,又支持了一個__func__可以得到當前的函數名
對於非常數的表達式,也允許編譯器做化簡
修改了對於\/%處理負數上的定義,比如老的標準裡-22\/7=-3,-22%7=-1而現在-22\/7=-4,-22%7=6
取消了不寫函數返回類型默認就是int的規定
允許struct定義的最後一個數組寫做[]不指定其長度描述
constconstinti;將被當作constinti;處理
增加和修改了一些標準頭文件,比如定義bool的定義一些標準長度的int的定義複數的定義寬字符的有點泛型味道的數學函數跟浮點數有關的。裡多了一個va_copy可以複製。..的參數。裡多了個structtmx對structtm做了擴展
輸入輸出對寬字符還有長整數等做了相應的支持
相對於c89的變化
1.增加restrict指針
C99中增加了公適用於指針的restrict類型修飾符,它是初始訪問指針所指對象的唯一途徑,因此隻有借助restrict指針表達式才能訪問對象。restrict指針指針主要用做函數變元,或者指向由malloc()函數所分配的內存變量。restrict數據類型不改變程序的語義。
最新小說章節盡在o o p . t w
如果某個函數定義了兩個restrict指針變元,編譯程序就假定它們指向兩個不同的對象,memcpy()函數就是restrict指針的一個典型應用示例。C89中memcpy()函數原型如下:
代碼:void*memcpy(void*s1,constvoid*s2,size_tsize);
如果s1和s2所指向的對象重疊,其操作就是未定義的。memcpy()函數隻能用於不重疊的對象。C99中memcpy()函數原型如下:代碼:void*memcpy(void*restricts1,constvoid*restricts2,size_tsize);
通過使用restrict修飾s1和s2變元,可確保它們在該原型中指向不同的對象。
2.inline(內聯)關鍵字
內聯函數除了保持結構化和函數式的定義方式外,還能使程序員寫出高效率的代碼。函數的每次調用與返回都會消耗相當大的係統資源,尤其是當函數調用發生在重複次數很多的循環語句中時.一般情況下,當發生一次函數調用時,變元需要進棧,各種寄存器內存需要保存。當函數返回時,寄存器的內容需要恢複。如果該函數在代碼內進行聯機擴展,當代碼執行時,這些保存和恢複操作旅遊活動會再發生,而且函數調用的執行速度也會大大加快。函數的聯機擴展會產生較長的代碼,所以隻應該內聯對應用程序性能有顯著影響的函數以及長度較短的函數
3.新增數據類型
_Bool
值是0或1。C99中增加了用來定義bool、true以及false宏的頭文件夾,以便程序員能夠編寫同時兼容於C與C++的應用程序。在編寫新的應用程序時,應該使用
頭文件中的bool宏。
_Complexand_Imaginary
C99標準中定義的複數類型如下:float_Complex;float_Imaginary;double_Complex;double_Imaginary;longdouble_Complex;longdouble_Imaginary.
頭文件中定義了complex和imaginary宏,並將它們擴展為_Complex和_Imaginary,因此在編寫新的應用程序時,應該使用頭文件中的complex和imaginary宏。
longlongint
C99標準中引進了longlongint(-(2e63-1)至2e63-1)和unsignedlonglongint(0-2e64-1)。longlongint能夠支持的整數長度為64位。
強增的組數對.4
組數長變可
。的長變是以可才組數部局有隻是但,組數長變可做叫就組數類這,式達表的值其定確能才時行運在隻括包,定確式達表型整的效有一任由以可數維的組數,時組數明聲員序程,中99C
。組數長變可的長定確不義定來*用使以可。小大的組數是隻的化變以可。的態動是不組數長變可,說是就也,的變不是內期存生組數在數維的組數長變可
符飾修型類的中明聲組數
。義意何任有沒elitalov用使。組數個一同向指終始針指,tsnoc用使果如。徑途一唯的象對該問訪始初是針指,tcirtser用使果如。元變數函於用隻但,字鍵關tsnoc,elitalov,tcirtser用使內號括方的明聲組數在以可也。數個素元的定指含包少至將組數的向指所元變,序程譯編訴告於當相這,字鍵關citats用使內號括方的明聲組數在以可,元變數函為作組數用使要需果如,中99C在
釋注行單.5
。了釋注種這用使樣一++C象以可,"\/\/\"\記標釋注行單了入引
明聲與碼代散分.6
改修的序程理處預.7
表列元變、a
;)n,m,k(muSyM句語)__SGRA_AV__(mus)...(muSyMenifed#:例。換替到得處何在將元變定決__SGRA_AV__符識標理處預部內。示表)..。(號略省用中義定宏在,元變帶以可宏
"\,"\llams"\(pmcrts:成換替將;)"\egral"\,"\llams"\,pmcrts(erapmoc的中其)__SGRA_AV__(fpmoc)..。,fpmoc(erapmocenifed#:例。元變含包以可還元變;)n,m,k(mus:成換轉被將