编译使用c11
❶ 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作为半精度浮点数类型的关键字。
❷ 为什么linux下C11没法使用memcpy_s
简单的说,那就是没有呗;memcpy_s这个本身就是windows的库,而不是标准库,更不是你所说的C11的库;这个应该是windows所谓的更安全的库;
❸ 如何配置C11标准的编译器
gcc默认是不支持c99及以上版本的 如果想支持,需要在编译时加参数:-std=c99 gcc -std=c99 -o xx xx.c 或者在源码里定义宏 #define __STDC_VERSION__ 199901L
❹ 如何让 MinGW 编译器支持 C++ 11
请到关。 网下载mingw最新版本,安装的时候选择GCC-4.8.1(G++4.8.1)。
编译时添加编译选项: -std=c++11
mingw的GCC有一点问题,如果要使用完整C++特性,建议使用cygwin
如果要结合使用第三方IDE必须确保IDE调用编译器时自动添加上述编译选项。
❺ linux内核迁移到c11
内核开发者ArndBergmann发出了一个新的补丁,允许Linux内核在指定C11的GNU方言时默认使用“-std=gnu11”。
事件的前因后果为,Linux内核社区日前曾讨论了是否要为内核采用现代C语言标准。Linus在讨论中提出了从C89提升到C99的想法;并表示,内核代码一直停留在C89的原因之一是编译器gcc的旧版本会出现奇怪的问题,导致初始化程序被破坏。但现在内核要求的GCC最低版本已经提高到了v5.1,那些bug可能已经不再相关。
最后事实证明,以当前内核的最低版本编译器要求和当前代码的条件,他们实际上可以开始使用C11构建内核。ArndBergmann提议直接升级到C11甚至C2x。虽然他不确定C11是否会带来任何对内核有用的新内容,但如果升级到C17或C2x,会破坏对gcc-5/6/7的支持;因此升级到C11更容易实现,而且跨越太大内核社区未必接受。
Linus对该想法表示了赞成。在Bergmann确认此举可行后,Linus宣布将在下一个内核版本v5.18中尝试使用C11标准。
❻ 请教关于gcc编译文件时遇到C11支持的问题
由于系统比较复杂,首先用VC++.NET 2005 开发,在PC测试全部通过后,使用GCC编译时出现了两个警告,调试时出现一个错误.请高手指教:
1.编译器警告
Queue.h:20: warning: ignoring packed attribute on unpacked non-POD field `CommandPackage Queue::cmd[1]
请教原因
2.编译器警告
buffer.h:12: warning: alignment of 'Buffer::_ZTV6Buffer' is greater than maximum object file alignment. Using 1
3.调试器报错
AVR Simulator: Excessive stack overflow, stop sim
简单说明下程序的情况:
程序用了面向对象的设计,总共涉及了大约10+个类.其中报错了的是指令缓冲相关类.
Buffer继承出了E2PBuffer和CommBuffer,在类内部使用了一个CommandPackage(non-POD)类型组成的Queue类.其中Buffer及其两个子类还有Queue均报了以上两个警告.
我CommandPackage的大小是 10 Byte,缓冲队列最大数量是5,缓冲队列一共产生了6个实例.
由于编译器不支持new和delete,所有对象在全局实例化.并通过函数初始化函数将引用传进类
❼ 请问什么C语言编译器才能支持带有C11标准,支持后缀_s的可选安全函数
带有_s的函数只是微软在VS中给出的吧,并不是标准库中的内容,如果要使用这些函数,只能用微软的编译器了。
❽ centos7 gcc编译器对c11标准的支持
gcc-std=c11main.c-omain
前提是你的gcc版本得够新, 支持 c11才可以.
❾ c语言到底需不需要按照它的最新标准来为什么有的有的编译器对c11标准不是很在乎,
根据你的使用的编译器和你的实际需要来。
是否使用新标准,就像是现在是使用win7还是win10的选择一样,喜欢用哪个就哪个。
新的标准只是增加了新的特性,并没有对老的内容有修改,是向下兼容的。
❿ 请教关于gcc编译文件时遇到C11支持的问题
有可能是(默认的)路径不对,在遇到这个问题时,你可以在弹出来的对话框中自己手动去设置你希望的exe文件,问题就解决了