c11相关内容

C11的睡眠功能

我想在C11节目中睡觉。不会同时使用GCC(4.8.2)和clang(3.2)的-std=c11选项声明usept(unistd.h)或nanosept(time.h)。 Agrep sleep /usr/include/*.h未显示任何其他可能的睡眠候选项。 我需要至少毫秒精度的睡眠。 我如何在C11中入睡? 推荐答案 使用-std=gnu11而不是-std=c11 ..
发布时间:2022-05-23 11:44:28 其他开发

_Bool 类型和严格别名

我试图编写一些宏以安全地使用 _Bool,然后对我的代码进行压力测试.为了邪恶的测试目的,我想出了这个肮脏的黑客: _Bool b=0;*(无符号字符*)&b = 42; 鉴于 _Bool 在实现 sizeof(_Bool)==1) 上是 1 个字节,我看不出这种 hack 是如何违反 C 标准的.这不应该是严格的别名违规. 然而,当通过各种编译器运行这个程序时,我遇到了问题: #in ..
发布时间:2022-01-19 17:35:02 其他开发

支持 C11 的编译器

我想知道是否有任何编译器支持相当多的新 C11 标准.寻找通用选择等功能. 有什么建议吗? 解决方案 Pelles C 7.00 版(Release Candidate 现已推出) http://www.smorgasbordet.com/pellesc/ ..
发布时间:2022-01-17 08:47:35 其他开发

C11 的 __STDC_VERSION__ 值是多少?

我知道编译器使用 __STDC__ 来表明编译器是标准 C,并且从那里,您可以使用 __STDC_VERSION__ 来确定哪个级别 您正在使用的标准. 我也知道C90没有价值,C90修正1有199401L,C99有199901L. 最新的 C1x 草案我简单地将其声明为 201ymmL,并且我假设它在最终标准中的值不那么“模糊". 我的猜测是它会是 201112L,因为那是 C ..
发布时间:2022-01-11 19:33:25 其他开发

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

C11 添加了“匿名结构和联合"等内容. 我四处寻找,但找不到关于匿名结构和联合何时有用的明确解释.我问是因为我不完全理解它们是什么.后来我知道它们是没有名称的结构或联合,但我一直(不得不?)将其视为错误,因此我只能设想使用命名结构. 解决方案 结构内部的匿名联合在实践中非常有用.考虑到您想要实现一个可区分的和类型(或 tagged union),一个带有布尔值的聚合和一个浮点数或一 ..
发布时间:2021-12-23 16:51:45 其他开发

MSVC 上的 std::isfinite

C++11 和 C11 标准定义了std::isfinite功能.Visual Studio 2012 似乎没有提供它作为cmath 或 math.h,但有 amp_math.h好像提供了这个功能. isfinite 是否可以与 std::isfinite 互换?这文档没有讨论使用 NAN 调用时的行为而且我没有 VS 编译器来测试这个. 解决方案 正如 Marius 已经指出的那样 ..
发布时间:2021-12-22 18:55:09 其他开发

在 Visual Studio 中是否有在 C99 和 C11 C 标准之间切换的选项?

我是 Visual Studio 环境的新手,我使用的是 VS2017 Pro.我想用 C 编写简单的程序并使用 c99 和 c11 标准编译.在 Visual Studio 中,我只能找到 C++ 标准的编译器开关. 我们如何告诉 Visual Studio 环境我们要使用 c99 和 c11 C 标准编译当前代码. 解决方案 Visual C++ 支持的唯一“模式"是:/std: ..
发布时间:2021-12-22 18:34:36 其他开发

使用 scanf_s 读取字符

我只是在玩弄 C 并遇到了这个小问题.正如你从我的输出中看到的,我得到了 '╠' 这个字符. #include int main(void){字符 c;printf("你想成为X还是O?\n");scanf_s("%c", &c);printf("你选择了 %c\n", c);} 参见程序输出 解决方案 您滥用了 scanf_s().Microsoft 编译器可能会警告您使用他们的安全 ..
发布时间:2021-12-22 18:18:22 其他开发

C11 中_Generic 的语法和示例用法

我听说 C11 添加了泛型.我用谷歌搜索了一下,看了一些文章,知道有一个新关键字( _Generic )等等.但我似乎无法全部掌握. 它是否类似于 C# 中的泛型或 C++ 中的模板?谁能给我简要解释一下泛型的 C11 定义、它的语法和一个简单的示例用法示例? 解决方案 这是一个很好的介绍.概览如下: 泛型选择是通过一个新关键字实现的:_Generic.语法类似于类型的简单 s ..
发布时间:2021-12-15 09:29:10 其他开发

为什么 gcc(或 glibc)没有实现 _s 函数?

_s 函数,如scanf_s、printf_s 似乎是可选的标准.MSVC 已经实现了这些功能,但是 gcc 没有. 未实现安全功能是否有特定原因?glibc的scanf是否足够安全? 解决方案 _s 函数是可选的 (C11 标准的附录 K).他们被广泛认为“不太有益". 在我的问题的答案中您使用 TR-24731 “安全"吗?功能?,您可以找到有关标准规范哪里存在问题的信息— ..
发布时间:2021-12-13 09:40:48 其他开发

当前 GCC(尤其是在 Ubuntu 上)的默认 C -std 标准版本是什么?

当我要求查看 cc 的当前版本时,我得到了这个. $ cc --versioncc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2版权所有 (C) 2012 Free Software Foundation, Inc.这是免费软件;请参阅复制条件的来源.没有保修单;甚至不是为了特定目的的适销性或适合性.$ 我想知道使用的是 c89、c90、c99 或 c11 中的哪一 ..
发布时间:2021-12-12 12:02:38 其他开发

为什么 auto a=1;用C编译?

代码: int main(void){自动 a=1;返回0;} 当文件具有 .c 扩展名时,由 MS Visual Studio 2012 编译器编译而不会出错.我一直认为,当你使用.c扩展名时,编译应该按照C语法,而不是C++.此外,据我所知,自 C++11 以来,C++ 中仅允许没有类型的 auto,这意味着该类型是从初始化程序推导出来的. 这是否意味着我的编译器没有坚持使用 C,或 ..
发布时间:2021-11-30 18:12:16 其他开发

C11 标准文档

从这个SO保护问题开始 我试图了解这些文件之间的区别: 9899 2012 费用 $60 9899 2011 费用 265 美元 正如您所看到的,这些文件的价格差异很大,我不知道便宜的那个是否有效,或者是真实标准的草稿或剪切副本. 有人买了 INCITS 的吗? 编辑 正如@Chqrlie 指出的那样:ANSI 和 ISO 官方文档的免费版本和最终草案的区别是什么, ..
发布时间:2021-11-28 17:53:36 其他开发

char 数组可以用于任何数据类型吗?

malloc() 函数返回一个 void* 类型的指针.它根据作为参数传递给它的 size_t 值以字节为单位分配内存.结果分配是原始字节,可用于 C 中的任何数据类型(无需强制转换). 可以在返回 void * 的函数中声明类型为 char 的数组与任何数据类型一起使用,例如 malloc? 例如 #include void *Stat_Mem();int main(void){/ ..
发布时间:2021-11-18 05:13:58 其他开发