问题标签 [c99]

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 投票
1 回答
995 浏览

c - 打印、转换时考虑FPU取整模式的编译平台

编辑:我在调试期间犯了一个错误,导致我问这个问题。我看到的差异实际上在于打印双精度和解析双精度 ( strtod)。即使经过这次整改,斯蒂芬的回答仍然很好地涵盖了我的问题,所以我想我会不理会这个问题,以防它对某人有用。

我可以访问的一些(大多数)C 编译平台在以下情况下不考虑 FPU 舍入模式

  • 将 64 位整数转换为double;
  • 打印一个double.

这里没有什么特别的东西:Mac OS X Leopard、各种最新的 Linux 和 BSD 变体、Windows。

另一方面,Mac OS X Snow Leopard 在做这两件事时似乎将舍入模式考虑在内。当然,有不同的行为会让我烦恼不已。

以下是这两种情况的典型片段:

我的问题是:

  1. 我可以做一些不丑陋的事情来规范所有平台的行为吗?一些隐藏的设置告诉平台不考虑舍入模式,反之亦然?
  2. 是行为标准之一吗?
  3. 不使用 FPU 舍入模式时,我可能会遇到什么情况?向零舍入?四舍五入到最近?请告诉我只有一种选择:)

关于 2. 我在标准中找到了一个地方,据说转换为整数的浮点数总是被截断(向零舍入),但我找不到整数 -> 浮点方向的任何内容。

0 投票
1 回答
1341 浏览

c - MinGW 错误“未定义对 'typeof'' 的引用”

我得到一个“对'typeof'的未定义引用” - 编译和链接这个错误:

gcc 的版本是 4.3.3,命令行是“gcc.exe -std=c99 1.c -o 1.exe”。

0 投票
2 回答
356 浏览

floating-point - C99 and floating point environment

I was looking at new features of C99 and saw the floating point environment:

My question is simple. If I'm performing floating point number computations, do I have to include the above preprocessor directive in my code? If no, then what does this directive do and when does it become important to include?

Thanks a lot...

0 投票
3 回答
1983 浏览

c - 定义中函数标题后的 C 变量声明

在阅读一些 FreeBSD 源代码时(参见:radix.h第 158-173行),我发现在定义中的“函数标题”之后的变量声明。

这在 ISO C (C99) 中有效吗?什么时候应该在生产代码中完成,而不仅仅是在“函数标题”中声明变量?为什么要在这里完成?

我指的是标题字符串的函数,如下所示:int someFunction(int i, int b) {

0 投票
4 回答
6727 浏览

c++ - 结构位域最大大小(C99,C++)

位结构字段的最大位宽是多少?

我可以在 struct 中定义一个位域,位域的大小最多为 128 位、256 位或更大吗?有一些超宽向量类型,如 sse2(128 位)、avx1/avx2(256 位)、avx-512(下一个 Xeon Phis 为 512 位)寄存器;还有像gcc 中的__int128这样的扩展。

0 投票
3 回答
5312 浏览

double - C99 中的 double_t

我刚刚读到 C99 的 double_t 应该至少和 double 一样宽。这是否意味着它在小数点后给出了更精确的数字?比通常的 15 位多双倍?。

二、使用方法:只包括

足够?我读到必须将 FLT_EVAL_METHOD 设置为 2 以获得长双精度。这该怎么做?当我使用数值方法时,我希望在不使用任意精度库的情况下获得最大精度。

非常感谢...

0 投票
1 回答
2653 浏览

c - MS VS 2008 和 C99

我感兴趣地阅读了帖子“C99 的支持有多普遍?”。其中的一条评论指出微软不支持 C99。但是注释符号 // 适用于 VS 2008,并且该符号在 C99 中。我有两个问题:

  1. VS 2008 在多大程度上支持 C99?

  2. 可以在同一代码中将 C89 和 C99 语法混合在一起吗?因此,如果我在 C89 中编写代码,然后添加注释 //。这意味着我有混合编码。那么在这种情况下编译器会做什么呢?先用 c89 检查我的代码,然后用 C99 检查我的代码是否接受我使用 // 进行评论?

0 投票
4 回答
4791 浏览

c - 哪些可用的 GNU C 扩展在 C99 中实现并不容易?

为什么Linux内核只能用GCC编译?某些项目真正需要哪些 GNU C 扩展,为什么?

0 投票
2 回答
5248 浏览

gcc - 如何使用 GCC 编译一个独立的环境?

我正在处理的代码应该可以为托管和独立环境构建,为后一种情况下的某些 stdlib 函数提供私有实现。

我可以在普通工作站/构建服务器上仅使用 GCC 可靠地测试它吗?使用 GCC 编译为独立环境

  • “-ffreestanding”选项看起来很有希望,但它似乎“仅”禁用内置插件并正确设置 STDC_HOSTED 宏,它仍然提供所有系统头文件。

  • 选项“-nostdinc”过于严格;我仍然想使用独立实现所需的标头(特别是 stddef.h 和 limits.h)。

我在这里想念什么?

哦,我目前正在使用 GCC 4.4.3,将“很快”升级到 4.5.0。

0 投票
1 回答
1643 浏览

c - 各种编译器中的编译指示 swp、ivdep、预取支持

在良好的 Altix 手册(altix_single_cpu_optimization http://wwwuser.gwdg.de/~parallel/parallelrechner/altix_documentation/altix_single_cpu_optimization.pdf)中,我找到了这个用于优化编译器的 pragmas-hints 列表

哪些编译器支持这些编译指示?什么实现了链接优化(软件流水线是低 ipc 和低注册数处理器的相当困难的优化之一)?