23得票1回答
C11类型泛化表达式——为什么不直接添加函数重载?

我刚刚在维基百科上阅读了关于C11的文章,它是2011年12月发布的C语言新标准之一。我发现其中一个新增功能是“类型泛化表达式”: Type-generic expressions using the _Generic keyword. For example, the followi...

23得票1回答
GCC 4.8中的<stdatomic.h>是什么?

我想利用C11标准提供的新原子操作。 然而,尝试#include适当的头文件给了我这个错误: csort-par.c:5:23: fatal error: stdatomic.h: No such file or directory #include &lt;stdatomic.h&gt...

22得票1回答
C11的alignas与clang -Wcast-align的区别

我有一段最小化的C11代码,定义了一个包含uint16_t的结构体(这意味着应该将该结构体对齐到2字节),我想将char缓冲区转换为指向该结构体的指针。 开启所有警告后,clang正确地抱怨结构体的对齐要求未满足。因此,我添加了C11 alignas说明符以确保缓冲区足够对齐,但这并没有让cl...

22得票2回答
__func__ 在函数定义外部

如果我们在C(C99 / C11)和C ++中的函数外部使用预定义变量__func__,会发生什么?#include &lt;stdio.h&gt; const char* str = __func__; int main(void) { printf("%s", str); ...

22得票2回答
_Generic宏中传递不兼容的指针类型

以下代码生成了2个警告,这些警告在问题的标题中有描述。#include &lt;stdio.h&gt; static void _print_f(float *f){printf("float : %f\n", *f);} static void _print_i(int *i) {pri...

22得票1回答
为什么在C11中没有对齐的calloc函数

C11标准添加了aligned_alloc函数,用于分配未初始化的对齐内存。标准还包括calloc函数,用于分配已初始化为零但仅将其对齐到最大类型大小的内存。 为什么C11标准没有包含一个aligned_calloc函数,该函数分配对齐的零初始化内存? 我知道您可以使用memset对结果进...

22得票4回答
C11中的gets()等价于什么?

来自 cplusplus.com 最新版的C标准(2011)已经从其规范中明确删除了此函数。 C++中的此函数已被弃用(从2011年标准开始,遵循C99+TC3)。 我只是想知道C11标准中替代gets()的方法是什么?

22得票3回答
C11中_Noreturn的用法

可能是重复问题: _Noreturn属性的意义是什么? C11引入了_Noreturn属性,以指示函数永远不会返回。 除了在源代码中的文档价值之外,该属性还提供了哪些好处,为什么要使用它?

21得票3回答
C1X中匿名结构体或联合体的初始化

我有以下问题:根据当前的C1X草案,匿名结构(或联合体)如何正确初始化?这样做是否合法:struct foo { int a; struct { int i; int j; }; int b; }; struct foo f =...

21得票4回答
为什么在switch结构内不能使用“goto default;”或“goto case x;”语句?

C11第6.8.1节或C99,或C89的第3.6.1节似乎都表明default和case x(其中x是一些常量表达式)都是带标签的语句示例,以及适用于与goto一起使用的identifier:样式标签。 我知道我可以直接在default:或case x:标签后面放置一个identifier:...