1. 程式人生 > >C89標準和C99標準C11標準的區別

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); }
4. 靜態斷言( static assertions),_Static_assert(),在解釋 #if 和 #error 之後被處理。例子: _Static_assert(FOO > 0, "FOO has a wrong value"); 5. 刪除了 gets() 函式,C99中已經將此函式被標記為過時,推薦新的替代函式 gets_s()。 6. 新的 fopen() 模式,(“…x”)。類似 POSIX 中的 O_CREAT|O_EXCL,在檔案鎖中比較常用。 7. 匿名結構體/聯合體,這個早已經在 gcc 中了,我們並不陌生,定義在 6.7.2.1 p13。 8. 多執行緒支援,包括:_Thread_local,標頭檔案 <threads.h>,裡面包含執行緒的建立和管理函式(比如 thrd_create(),thrd_exit()),mutex (比如 mtx_lock(),mtx_unlock())等等,更多內容清參考 7.26 節。 9. _Atomic型別修飾符和 標頭檔案 <stdatomic.h>,見 7.17 節。 10. 帶邊界檢查(Bounds-checking)的函式介面,定義了新的安全的函式,例如 fopen_s(),strcat_s() 等等。更多參考 Annex K。 11. 改進的 
Unicode
 支援,新的標頭檔案 <uchar.h> 等。例項程式碼:

相關推薦

C89標準C99標準C11標準區別

C11相比C99的變化 編輯 1. 對齊處理操作符 alignof,函式 aligned_alloc(),以及 標頭檔案 <stdalign.h>。見 7.15 節。 2. _Noreturn 函式標記,類似於 gcc 的 __attribute__((noretur

ANSI c與C89C99C11區別

不同版本標準差異總結(圖片來源:http://www.crifan.com/summary_c_language_version_c89_amd1_c99_c11): 以下為轉載: 【K&R C】 1978 年,Dennis Ritchie 和 Brian Kernighan 合作推出了《The

C89 C99 標準比較

 1、增加restrict指標   C99中增加了公適用於指標的restrict型別修飾符,它是初始訪問指標所指物件的惟一途徑,因此只 有藉助restrict指標表示式才能訪問物件。restrict指標指標主要用做函式變元,或者指向由malloc()函 數所分配的記憶體變數。

C89C99標準比較

1、增加restrict指標C99中增加了公適用於指標的restrict型別修飾符,它是初始訪問指標所指物件的惟一途徑,因此只有藉助restrict指標表示式才能訪問物件。restrict指標指標主要用做函式變元,或者指向由malloc()函式所分配的記憶體變數。restrict資料型別不改變程式的語義。如果

關於iphone設置顯示模式為標準模式放大模式時的區別

設置 sca style cal ins main pan 我不 spa 參考來自:https://www.jianshu.com/p/5f61d914114b CGFloat scale = [[UIScreen mainScreen] scale]; CGFloat

標準均方根誤差的區別總結

方差、標準差和均方根誤差的區別總結 轉載。 https://blog.csdn.net/zengxiantao1994/article/details/77855644 一、方差         方差(variance):是在概率論和統計方差衡量隨

java 標準輸出與標準錯誤 out與 err 區別 用法 聯絡 java中的out與err區別 System.outSystem.err的區別 System.out.printlnSystem.err.println的區別 Java重定向S

/** * The "standard" output stream. This stream is already * open and ready to accept output data. Typically this stream * corresponds

方差、標準均方根誤差的區別總結

一、方差        方差(variance):是在概率論和統計方差衡量隨機變數或一組資料時離散程度的度量。概率論中方差用來度量隨機變數和其數學期望(即均值)之間的偏離程度。統計中的方差(樣本方差)是

W3C的標準DOM事件模型IEDOM事件模型的區別

在瀏覽器解析事件的時候,有兩種觸發方式,一種叫做Bubbling(冒泡),另外一種叫做Capturing(捕獲)。由上圖可以看出來,冒泡的方式效果就是當一個DOM元素的某事件例如click事件被fire時,依次它的父元素的click事件也被fire(觸發),一直

gcc g++ 支援c++11編譯的標準區別

g++ -g -Wall -std=c++11 main.cpp gcc -g -Wall -std=c11 main.cpp 如果不想每次寫這個-std=C++11這個選項該怎麼辦呢?   方法1:寫Makefile   方法2:取別名 :alias g++11

POSIXC99標準標頭檔案

ISO C標準定義的標頭檔案(24項)<assert.h>       ----------------------   驗證程式斷言<complex.h>    ----------------------   支援複數算術運算<ctype.h

c89c99中/運算符%運算符為負數時的區別

區別 str tro c99 根據 負數 cpu strong 除法 運算式 -8 / 5 = -1.6,在C89中取值為 -1 或 -2,C99的出現,CPU對除法的結果向零取整,上述運算式結果為 -1。 在C89和C99中都要確保 (a / b) * b + a % b

web標準語義化

color oot pan 機器 同時 語義 獨立 信息 閱讀 web語義化? 為了信息更加容易被機器理解和查找(主要是搜索引擎),有利於搜索引擎優化。同時,重點,便於苦逼的程序員進行閱讀和維護(程序員已經夠苦逼了,不要再折磨他了)。 HTML5進一步推進了web語義化發展

C11 標準特性研究

要點 2.0 win cjson 產生 nan query iso 安全 前言 - 需要點開頭   C11標準是C語言標準的第三版(2011年由ISO/IEC發布),前一個標準版本是C99標準。 相比C99,C11有哪些變化呢!!所有的測試全部基於能夠和標準貼合的特性平

HTML Tag, 把 WCAG 的標準語義網的目標進行代碼上的體現

sel nta 展示 寫到 date 控制 mat vid 成對 1. 文檔聲明:<!Doctype> 其實這跟 WCAG 根本上連不上什麽直接關系,但為了一個兼容性更好,特別是向後兼容的頁面,我推薦你這樣寫: <!Doctype html> 2.

軟件產品驗收測試標準流程

驗收測試 軟件測試 測試幫日記 小強測試品牌 1. 驗收測試簡介1.1簡介驗收測試即由產品開發方按照新浪提供的需求文檔中所有內容(或按合同及其它有效約定,對方承諾實現的需求)進行開發、內測完畢,提交版本符合驗收測試標準,通過新浪質量保證部進行的測試。通過驗收測試判斷產品質量是否符合產品需求,功

技術標準規範

出現 固定 復雜 要掌握 過度 網絡拓撲圖 掌握 事情 tro 技術能力成長的過程概述 初期:經驗靠模仿,靠搜索,靠copy,判斷分析解決問題的能力薄弱,喜歡請教問題,需求幫助,文檔編輯整理能力差,極其不正規 中期:積累了一點的經驗,靠自己的一套解決問題的思路去解決問題,有

圖解資料中心水系統標準架構(大全)

依照TIA-942標準。資料中心水系統能夠分為四個標準,各自是T1、T2、T3和T4。 一、T1:無備用級。全部裝置和管路均無冗餘。N+0配置,冷機、冷卻塔、水泵和末端只能滿足實際需求,沒有備份和冗餘,不論什麼裝置的故障都會影響系統的工作;

C89C99區別--簡單總結

(1)對陣列的增強       可變長陣列  C99中,程式設計師宣告陣列時,陣列的維數可以由任一有效的整型表示式確定,包括只在執行時才能確定其值的表示式,這類陣列就叫做可變長陣列,但是隻有區域性陣列才可以是變長的.可變長陣列的維數在陣列生存期內是不變的,也就是說,可變長陣列不

關於SVPWM馬鞍形相、線電壓標準正弦的一些彙總

http://bbs.simol.cn/forum.php?mod=viewthread&tid=105947&extra=&page=3&mobile=2   這個問題困惑過不少初學者或者沒有相關專案經驗的人,當初我也被困惑過,我來做個總結: