C89標準和C99標準C11標準的區別
C11相比C99的變化
編輯 1. 對齊處理操作符 alignof,函式 aligned_alloc(),以及 標頭檔案 <stdalign.h>。見 7.15 節。 2. _Noreturn 函式標記,類似於 gcc 的 __attribute__((noreturn))。例子: _Noreturn void thrd_exit(int res); 3. _Generic 關鍵詞,有點兒類似於 gcc 的 typeof。示例程式碼:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include<stdio.h>
#defineGENERAL_ABS(x)_Generic((x),int:abs,float:fabsf,double:fabs)(x)
intmain( void )
{
printf ( "intabs:%d\n" ,GENERAL_ABS(-12));
printf ( "floatabs:%f\n" ,GENERAL_ABS(-12.04f));
printf ( "doubleabs:%f\n" ,GENERAL_ABS(-13.09876));
inta=10; intb=0,c=0;
_Generic(a+0.1f, int :b, float :c, default :b)++;
printf ( "b=%d,c=%d\n" ,b,c);
_Generic(a+=1.1f, int :b, float :c, default :b)++;
printf ( "a=%d,b=%d,c=%d\n" ,a,b,c);
}
|