91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中的ANSI標準是什么

發布時間:2021-11-23 09:12:00 來源:億速云 閱讀:242 作者:iii 欄目:互聯網科技

本篇內容主要講解“C語言中的ANSI標準是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言中的ANSI標準是什么”吧!

什么是K&R C?

1978年,丹尼斯?里奇(Dennis Ritchie)和布萊恩?柯林漢(Brian Kernighan)合作出版了《C程序設計語言》的第一版。書中介紹的C語言標準也被稱作“K&R C”。

什么是ANSI C、ISO C、C89、C90標準

隨著C語言使用得越來越廣泛,出現了許多新問題,人們日益強烈地要求對C語言進行標準化。1983年,美國國家標準協會(ANSI)組成了一個委員會,X3J11,為了創立 C 的一套標準。經過漫長而艱苦的過程,該標準于1989年完成,這個版本的語言經常被稱作ANSI C,或有時稱為C89(為了區別C99)。在1990年,ANSI C標準(帶有一些小改動)被美國國家標準協會(ANSI)采納為ISO/IEC 9899:1990。這個版本有時候稱為C90或者ISO C綜上,ANSI C、ISO C、C89、C90其實是同一種標準

什么是C99標準

2000年3月,ANSI 采納了 ISO/IEC 9899:1999 標準。這個標準通常指C99。 C99新增了一些特性,如:支持不定長的數組,即數組長度可以在運行時決定。變量聲明不必放在語句塊的開頭,for語句提倡寫成for(int i=0;i<100;++i) 的形式,即i只在for語句塊內部有效。

什么是C11標準

C11標準是C語言標準的第三版(2011年由ISO/IEC發布),前一個標準版本是C99標準。與C99相比,C11有哪些變化呢?

1、 對齊處理:alignof(T)返回T的對齊方式,aligned_alloc()以指定字節和對齊方式分配內存,頭文件<stdalign.h>定義了這些內容。


2、 _Noreturn:_Noreturn是個函數修飾符,位置在函數返回類型的前面,聲明函數無返回值,有點類似于gcc的__attribute__((noreturn)),后者在聲明語句尾部。


3、 _Generic:_Generic支持輕量級范型編程,可以把一組具有不同類型而卻有相同功能的函數抽象為一個接口。


4、 _Static_assert():_Static_assert(),靜態斷言,在編譯時刻進行,斷言表達式必須是在編譯時期可以計算的表達式,而普通的assert()在運行時刻斷言。


5、安全版本的幾個函數:gets_s()取代了gets(),原因是后者這個I/O函數的實際緩沖區大小不確定,以至于發生常見的緩沖區溢出攻擊,類似的函數還有其它的。


6、 fopen()新模式:fopen()增加了新的創建、打開模式“x”,在文件鎖中比較常用。


7、 匿名結構體、聯合體。


8、 多線程:頭文件<threads.h>定義了創建和管理線程的函數,新的存儲類修飾符_Thread_local限定了變量不能在多線程之間共享。


9、 _Atomic類型修飾符和頭文件<stdatomic.h>。


10、改進的Unicode支持和頭文件<uchar.h>。


11、quick_exit():又一種終止程序的方式,當exit()失敗時用以終止程序。


12、復數宏,浮點數宏。


13、time.h新增timespec結構體,時間單位為納秒,原來的timeval結構體時間單位為毫秒。

下面看一段程序:

#include <stdio.h>

int main(void)
{
 // C99允許在for循環內定義循環變量,而C89不允許
 for (int i = 0; i < 5; i++)    
 {
   printf("hello world!\n");
 }

   return 0;
}

在C89標準下編譯,結果為:

C語言中的ANSI標準是什么

編譯報錯原因為,在C89標準下,循環變量不能在for循環內定義,必須把標準改為C99標準才可正常編譯。以C99編譯的命令為:

gcc -std=c99 test.c -o test.exe

如下圖,以C99編譯能成功編譯:

C語言中的ANSI標準是什么

所以在平時的開發中應該要了解編譯器支持什么標準。因為,有時候編譯出錯是因為當前編譯器支持的標準不同。

GCC編譯器在編譯的時候可指定C語言標準:

指定c90標準: -std=c90

指定C99標準: -std=c99

定C11標準(目前正在開發中): -std=c11

到此,相信大家對“C語言中的ANSI標準是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寿宁县| 开平市| 安顺市| 闽侯县| 仪陇县| 临湘市| 长丰县| 新晃| 扶风县| 左贡县| 贵港市| 洛阳市| 同江市| 济南市| 巴彦淖尔市| 博客| 吉首市| 四平市| 盐源县| 木里| 濮阳县| 平塘县| 棋牌| 苏尼特左旗| 岳池县| 年辖:市辖区| 东乡县| 博爱县| 成武县| 洞头县| 耒阳市| 双鸭山市| 句容市| 靖宇县| 大厂| 延边| 团风县| 彭泽县| 洪泽县| 台中市| 黄陵县|