问题标签 [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.

0 投票
2 回答
11305 浏览

c++ - 为什么 C++11 不支持匿名结构,而 C11 支持?

C11 支持匿名结构,如下所示:

基本上,此类 a 的成员struct被视为封闭的成员structunion(递归地,如果封闭结构本身是匿名的)。

C++11 不包括匿名结构的理由是什么?当然,它们只是非常有用(主要是在联合内部,以消除为 输入标识符struct)。但它们似乎是对规范的一个足够明显的补充(并且已经由许多编译器实现),肯定必须讨论它们,至少要保持与 C11 标准的兼容性。那么为什么不添加它们呢?

0 投票
3 回答
5486 浏览

c - C11 的最新变化

C1x 已成为 ISO/IEC 9899:2011 又名 C11。

有谁知道2011 年 4 月草案 n1570标准中有哪些变化(如果有的话) ?

ETA:这里有来自伦敦(2011 年 3 月)的委员会会议记录(应该包含在 n1570 中) ,这里有来自华盛顿特区(2011 年 10 月)委员会会议记录;我想 DC 会议记录中接受的更改列表应该涵盖这些内容。

0 投票
3 回答
2217 浏览

c - 可用的编译器是否提供 C11 '_Atomic' 关键字及其相关头文件 'stdatomic.h' 的实现?

我知道 C11 标准只有一个月的时间,但草稿_Atomic要旧得多。我也知道 GCC 编译器会在标准正式批准之前努力实现这些功能。但即使在那里,支持还没有准备好迎接黄金时段。

但是,我也会对其他编译器感兴趣:Visual Studio 或嵌入式编译器 cq。环境。是否有任何编译器提供商准备提供此类支持?欢迎任何链接。

我在问,因为我从事汽车嵌入式开发,我想知道我是否应该自己朝那个方向发展。到目前为止,大多数环境(如 AutoSAR 或 Vector OS 支持)一直在提供本土解决方案,新标准现在为其提供了特定的语法和语义,只要编译器作者不朝着 C11 的方向发展,这将仍然是唯一真正的解决方案。

0 投票
1 回答
5683 浏览

c - C11 类型泛型表达式 - 为什么不添加函数重载?

我刚刚阅读了关于C11的 Wikipedia 文章,这是 2011 年 12 月发布的 C 标准的新版本,我看到其中一个新增功能是“类型通用表达式”:

_Generic使用关键字的类型通用表达式。例如,以下宏cbrt (x) 根据 x 的类型转换为cbrtl(x)cbrt(x)cbrtf(x )

这对我来说看起来很可怕——如果他们无论如何都要改变语言,为什么不像在 C++ 中那样添加函数重载呢?

0 投票
4 回答
5217 浏览

c - char[] 如何表示 UTF-8 字符串?

在 C11 中,添加了一个带有前缀 u8 的新字符串文字。这将返回一个字符数组,其中文本编码为 UTF-8。这怎么可能?不是普通的字符签名吗?意味着由于符号位,它可以使用的信息少一点吗?我的逻辑将描述一串 UTF-8 文本需要是一个无符号字符数组。

0 投票
4 回答
25171 浏览

c - C11在海湾合作委员会?

我正在尝试使用 编译一些 C11 代码thread.h,但我不能。我已经重新编译了 GCC(现在运行 4.6.2),我正在尝试使用gcc -std=c1x file.c -o file. 我可以在 g++ 中执行此操作(thread即使用库),但我不能在 C中执行此操作thread.h。GCC 发行版中还没有包含此功能吗?

0 投票
3 回答
39847 浏览

c - c11 中的多线程支持

新的 C11 标准提供了对多线程的支持。
我的问题有点多样化,但绝对可以回答。
我看过 C11 n1570草案。
它说:

支持多线程执行,包括改进的内存排序模型、原子对象和线程本地存储(<stdatomic.h><threads.h>

什么是改进的内存排序模型?c99 标准有何变化?

如果有人深入研究它们并尝试解释所涉及的语义,我将不胜感激,而不仅仅是引用标准。

据我了解,C11 支持:

  • 线程创建和管理
  • 互斥体
  • 条件变量
  • 线程特定存储 &
  • 原子对象

我希望我没有错过什么?
由于现在标准库本身提供(将提供)多线程所需的所有功能,将来是否不需要 POSIX 和此类库(用于多线程支持)?

最后,哪些编译器支持上述特性?是否有任何关于何时支持这些时间表的参考资料?
我记得对于 C++11,有一个编译器支持和特性的链接,也许是这样的?

0 投票
6 回答
52292 浏览

c - 匿名结构和联合何时在 C11 中有用?

C11 添加了“匿名结构和联合”等内容。

我四处寻找,但找不到关于匿名结构和联合何时有用的明确解释。我问是因为我不完全理解它们是什么。我知道它们是后来没有名称的结构或联合,但我一直(不得不?)将其视为错误,因此我只能设想用于命名结构。

0 投票
4 回答
413 浏览

c - 为什么编译器在尝试修改 char * 字符串文字时不检测并产生错误?

假设以下两段代码:

上面那个不行。

这个可以。

关于第一个,我知道字符串“hello world”可能存储在只读内存部分中,因此无法更改。然而,第二个在堆栈上创建了一个字符数组,因此可以修改。

我的问题是——为什么编译器不检测第一类错误?为什么那不是 C 标准的一部分?这有什么特别的原因吗?

0 投票
4 回答
11885 浏览

c - 如何根据 C11 使用二进制前缀?

我目前开始使用C30C基于GCC微芯片的编译器用于他们的设备)对微控制器进行编程,我出于好奇PIC24而启用。Strict ANSI warnings首先,我不知道在 C11 中,像 // 这样的注释标记是“错误的”,而我应该使用 /* blah blah */,但真正让我吃惊的是对一行代码的警告。

“警告:使用非标准二进制前缀”

代码行是:

OSCCONbits.COSC = 0b000;

我在网上查看了 C11 的一份草案(ISO/IEC 9899:2011),在 C 中找不到任何关于二进制前缀的信息。http://www.open-std.org/jtc1/sc22/wg14/www /docs/n1570.pdf

根据 C11,C 的正确二进制表示法是什么?