c11可以編譯嗎
1. 怎麼在gcc中使用fopen_s
如果你有讀過 C語言標準的話,C 語言有三個比較大的版本 C89/99/11
fopen_s 是屬於 C11 的新內容,首先要你的編譯器支持 C11
【編譯器是否支持C11】
這個可以通過預定義宏(__STDC_VERSION__)判斷,也就是
#if __STDC_VERSION__ >= 201112L
或者 if(__STDC_VERSION__ >= 201112L)
如果是支持 C11 的編譯器會返回 true
【編譯器是否支持 Annex K】
然後在支持 C11 條件下,編譯器可以選擇是否支持 Annex K ( 附錄K )
( 支持附錄K,意味著支持 fopen_s 這些函數 )
判斷編譯器是否支持 Annex K,只需要判斷預定義宏(__STDC_LIB_EXT1__),也就是
#if __STDC_LIB_EXT1__ >= 201112L
或者 if(__STDC_LIB_EXT1__ >= 201112L)
如果是支持 Annex K 的編譯器會返回 true
【向編譯器請求啟用 Annex K 下的安全函數使用】
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
在導入<stdio.h>之前,定義宏 __STDC_WANT_LIB_EXT1__ 的值為 1
恭喜你啟用了 printf_s scanf_s fopen_s 這些安全函數
【此方法不一定都適用】
這個方法僅適用於那些按照C語言標準的編譯器,mingw64編譯器我沒用過,
只知道像 vs 就默認啟用 scanf_s,如果以上方法不行,具體編譯器要查具體規則
2. 目前支持c++11的編譯器都有哪些
目前支持C++11的編譯器
gcc 4.8以上版本
clang 3.1 以上版本
VS2013 及以上版本(有部分C11特性不支持)
DEV-C++最新版本都是支持C++11的(在編譯選型中打開)
其他諸如Pelles C之類的小眾編譯器,基本也都支持了C++11
3. c11是什麼意思
C11標準是 ISO/IEC 9899:2011 - Information technology -- Programming languages -- C 的簡稱,曾用名為C1X。
C11標準是C語言標準的第三版,前一個標准版本是C99標准。2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC) 旗下的C語言標准委員會(ISO/IEC JTC1/SC22/WG14)正式發布了C11標准。
名詞解釋:
C11標準的最終定稿的草案是免費開放的,為N1570 [3] ,但是正式標准文件需要198瑞士法郎。
當前,支持此標準的主流C語言編譯器有:GCC、Clang、Intel C++ Compiler等。
對IEEE754標准-2008的半精度浮點數的支持。盡管遵循GNU C標准規范的編譯器(GCC以及Clang等)使用了C擴展關鍵字__fp16,但是只能對半精度浮點數進行引用,而不能做任何算術操作。因此,這個特性應當在下一個C語言標准中立馬加入進去的,建議使用_Half作為半精度浮點數類型的關鍵字。
4. 有什麼編譯器完美支持C11標准(不是C++11)
mingw支持C11
配合IDE code::blocks 或者 C-FREE 就能用了。。
C-FREE是中文版的