问题标签 [c11]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 在“for”条件下声明的变量的范围是什么?
这是有效的 C 代码吗?i的范围是什么?
c - 枚举值是在预处理时还是在编译时解析的?
枚举值何时解析?换句话说,以下代码片段是否符合标准?
c - 根据 C11,什么是“字节”?
3.6
字节:数据存储的可寻址单元,大到足以容纳执行环境的基本字符集的任何成员
注 1可以唯一地表示对象的每个单独字节的地址。
那么,当我得出标准仅针对字节可寻址内存架构的结论时,我是否正确解释了这一点?还是我以不正确的方式阅读它?
c - 铿锵 c11 threads.h 未找到
我正在尝试在 xcode 中设置一个 c11 线程示例...但它似乎没有threads.h 标头,尽管它并不抱怨此处描述的宏:
http://www.open-std。 org/jtc1/sc22/wg14/www/docs/n1570.pdf
__STDC_NO_THREADS__整数常量1,意在表示实现不支持<threads.h>头。
c - 如何在更高版本的 gcc 上启用 c11?
我目前使用gcc 4.6.3
. 我的理解是gcc
默认情况下使用gnu89
标准,我想启用最新的 C 标准 C11。我试过:
我替换c11
为gnu11
,我得到了同样的错误。为 gcc 启用最新 C 标准的正确方法是什么?
(注意:我对最新的 C 标准感兴趣,而不是最新的 C++ 标准。)
c - “符合标准的编译器可以选择不实现非规范化浮点数”的意义是什么?
ISO/IEC 9899:2011 §5.2.4.2.2 ¶10 (p48) 说:
次正规数的存在或不存在由实现定义的FLT_HAS_SUBNORM、DBL_HAS_SUBNORM和LDBL_HAS_SUBNORM值来表征:
-1 不确定
0 不存在(类型不支持次正规数)
1 存在(类型确实支持次正规数)
什么!所以在某些平台上我不能写double d = 33.3
?或者编译器会自动将其转换为333E-1
? 非归一化浮点数的存在或不存在的实际意义是什么?
c - 什么是 C 中的复合类型?
从第6.2.7.5 节(第 66 页)开始:
示例给定以下两个文件范围声明:
函数的结果复合类型是:
在上面的例子中,他们解释了复合类型是一种类型,兼容两种不同的类型。我会直观地将“复合类型”这个短语理解为“结构和联合”的意思,这似乎是偏离目标的。
什么是 C 中的复合类型,它的用途是什么?有人可以详细解释上面的例子吗?
c - _泛型和具有多个参数的函数
_Generic
我在 Wikipedia 上阅读了这个 C11 的示例:
似乎很清楚如何将它用于只有一个参数的函数,但我看不到用这个系统编写具有两个(或更多)泛型参数的函数的方法。怎么可能?
如果某些编译器支持此功能,我会尝试一些事情,但我也找不到,所以我无法找到有关如何做到这一点的任何想法。
c - 左值转换过程中,&为什么这么特别和| 从来没有提到过?
第6.3.2.1节(第 72 页)解释说
- An
lvalue
表示一个对象,即一块内存。 - 在表达式求值期间,对象被转换为它们的值,即不再是对象。值得注意的例外是
=
,&
,.
,++
,--
,的左操作数sizeof
。 - 数组通常转换为指向其第一个元素的常量指针。同样的操作数
&
是一个例外。 - 函数被隐式转换为指向函数的指针。一元的目标除外
&
。
为什么一元&
如此特别?为什么|
从来没有提到一元?
c - 使用 MinGW 将旧 C99 程序转换为 C11
我正在尝试将用 C99 编写的旧程序转换为 C11 以使用 MinGW 编译。我在这里遇到了这行代码
和这段代码
我不习惯c99。它在哪里说 [/size] 和 [/i] 是那些旧的 c99 语法还是只是有人写错了代码?
我也在使用 MinGW 的 -std=c99 切换。