Questions tagged «c11»

7
为什么“ sizeof(a?true:false)”给出四个字节的输出?
我有一小段关于sizeof三元运算符的代码: #include <stdio.h> #include <stdbool.h> int main() { bool a = true; printf("%zu\n", sizeof(bool)); // Ok printf("%zu\n", sizeof(a)); // Ok printf("%zu\n", sizeof(a ? true : false)); // Why 4? return 0; } 输出(GCC): 1 1 4 // Why 4? 但在这里, printf("%zu\n", sizeof(a ? true : false)); // Why 4? 三元运算符返回booleantype,sizeof …

7
为什么auto a = 1;用C编译?
代码: int main(void) { auto a=1; return 0; } 文件扩展名为.c时,MS Visual Studio 2012编译器将编译该文件而不会出现错误。我一直认为,当您使用.c扩展名时,应根据C语法而不是C ++进行编译。而且,据我所知,自C ++ 11起,只有在C ++中才允许不带类型的auto ,这意味着从初始化程序推导出类型。 这是否意味着我的编译器不坚持使用C,或者代码在C语言中实际上是正确的吗?
125 c  auto  c11 


9
为什么“不归还”功能归还?
我读 这个问题关于noreturn属性,它被用于那些不返回到调用函数。 然后我用C编写了一个程序。 #include <stdio.h> #include <stdnoreturn.h> noreturn void func() { printf("noreturn func\n"); } int main() { func(); } 并使用此生成的代码汇编: .LC0: .string "func" func: pushq %rbp movq %rsp, %rbp movl $.LC0, %edi call puts nop popq %rbp ret // ==> Here function return value. main: pushq %rbp movq %rsp, %rbp …

3
_Generic在C11中的语法和示例用法
我听说C11添加了泛型。我已经用Google搜索了一下,看了一些文章,了解到有一个新的关键字(_Generic)等等。但我似乎无法掌握所有内容。 它类似于C#中的泛型或C ++中的模板吗?谁能给我关于C11泛型定义,其语法和简单示例用法示例的简短说明?
70 c  generics  c11 

3
c11中的多线程支持
新的C11标准提供了对多线程的支持。 我的问题有点多样化,但肯定可以回答。 我看过C11 n1570草案。 它说: 支持多个执行线程,包括改进的内存排序模型,原子对象和线程本地存储(<stdatomic.h>和<threads.h>) 什么是改进的内存排序模型?与c99标准相比有何​​变化? 除了有人引用标准之外,如果有人深入研究它们并尝试解释所涉及的语义,我将不胜感激。 据我了解,C11提供以下支持: 线程创建和管理 互斥体 条件变量 线程专用存储和 原子物体 我希望我没有错过任何事情吗? 由于现在标准库本身提供了(将提供)多线程所需的所有功能,因此将来将不需要POSIX和此类库(用于多线程支持)吗? 最后,哪些编译器为上述功能提供支持?是否有关于何时支持时间表的参考? 我记得对于C ++ 11,有一个指向编译器支持和功能的链接,也许是这样的?
68 c  multithreading  c11 

1
C语言中重叠对象的语义是什么?
考虑以下结构: struct s { int a, b; }; 通常为1,此结构的大小为8,对齐方式为4。 如果我们创建两个struct s对象(更准确地说,我们将两个这样的对象写入分配的存储区),而第二个对象与第一个对象重叠怎么办? char *storage = malloc(3 * sizeof(struct s)); struct s *o1 = (struct s *)storage; // offset 0 struct s *o2 = (struct s *)(storage + alignof(struct s)); // offset 4 // now, o2 points half way into o1 *o1 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.