35得票2回答
C11的__STDC_VERSION__值是多少?

我知道编译器使用__STDC__来指示编译器是标准C,然后可以使用__STDC_VERSION__来确定你正在使用的标准的级别。 我也知道C90没有值,C90修正版1有199401L,C99有199901L。 我手头的最新C1x草案只是将其说明为201ymmL,我假设在最终标准中其值将不再...

34得票1回答
理解C11类型层次结构

我想全面理解C11语言的类型层次结构并以图形方式呈现出来(树状图将是完美的)。标准未提供该问题的任何图表 - 仅有30个描述各个类型及其关系的要点。我想自己画出来。 我的尝试从获取ISO/IEC 9899:201x委员会草案N1570开始,并从文档的6.2.5节中提取所有必要的语句。然后,我...

32得票5回答
这些函数类型在C中是否兼容?

考虑以下C程序:int f() { return 9; } int main() { int (*h1)(int); h1 = f; // why is this allowed? ret...

32得票2回答
C11中是否定义了memcpy(&a + 1, &b + 1, 0)?

这个问题是关于memcpy(0, 0, 0)定义性的,它已经被确定为未定义行为,这与先前的问题有关。 正如链接的问题所示,答案取决于C11条款7.1.4:1的内容: 除非在随后的详细说明中明确说明,否则将适用以下每个语句:如果函数参数具有无效值(如函数域外的值或程序地址空间外的指针或空指...

32得票1回答
在C99中,[*]和[static]这些奇怪的数组大小是什么意思?

显然,以下函数原型在C99和C11中是有效的:void foo(int a[const *]); void bar(int a[static volatile 10]); 那些奇怪的下标符号 *、static 和 CV 限定符有什么作用呢? 它们有助于区分静态类型数组和可变长度数组吗?还是...

31得票5回答
C11 GCC threads.h 未找到?

以下代码#include <threads.h> 给我报了这个错误:fatal error: threads.h: No such file or directory 使用最新的GCC和Clang,带有 -std=c11。 在GCC和Clang上不支持C11线程吗?还是有什么方法...

30得票4回答
GCC中是否支持C11 <thread.h>?

我正在尝试使用thread.h编译一些C11代码,但无法成功。 我已重新编译了GCC(现在运行的是4.6.2版本),并尝试使用gcc -std=c1x file.c -o file进行编译。 在g ++中,我可以做到这一点(使用thread库),但在C中无法实现。 thread.h是否还没有包...

29得票5回答
我应该采取哪些预防措施来创建一个不会引发未定义行为的内存池?

我最初的问题是,在一个项目中,我有几个对象共享生命周期(即,一旦我释放其中一个,我将释放它们所有),然后我想分配单个内存块。 我有三种不同对象类型的数组:struct foo,void *和char。起初我想这样使用malloc()分配一个块:// +---------------+-----...

28得票7回答
错误C4996: 'scanf': 在C编程中,此函数或变量可能存在安全隐患。

我创建了一个小应用程序,使用带参数的用户定义函数来查找最大数。当我运行它时,它显示以下消息: Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_...

28得票5回答
C11中用于多参数C函数的泛型

我理解C11泛型适用于单参数函数,例如:(来自这里)#define acos(X) _Generic((X), \ long double complex: cacosl, \ double complex: cacos, \ float complex: cacosf...