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是中文版的