问题标签 [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 投票
7 回答
140927 浏览

c++ - C99 stdint.h 头文件和 MS Visual Studio

令我惊讶的是,我刚刚发现 MS Visual Studio 2003 及更高版本中缺少 C99 stdint.h。我敢肯定他们有他们的理由,但有人知道我在哪里可以下载副本吗?如果没有此标头,我就没有有用类型的定义,例如 uint32_t 等。

0 投票
7 回答
10108 浏览

c - C99 的支持范围有多广?

当今的编译器支持 C99 标准的普遍程度如何?我知道即使 GCC 也不完全支持它。这是正确的吗?

C99 的哪些功能比其他功能更受支持,即我可以使用哪些功能来确定大多数编译器会理解我?

0 投票
12 回答
64922 浏览

c++ - Visual Studio 是否支持新的 C/C++ 标准?

我一直在阅读有关 C99 和 C++11 以及所有这些完全甜蜜的东西,它们被添加到语言标准中,将来可能会很好用。然而,我们目前在 Visual Studio 中编写 C++ 的土地上苦苦挣扎。

标准中的任何新内容是否会被添加到 Visual Studio 中,或者微软是否更有兴趣添加新的 C# 变体来做到这一点?

编辑:除了接受的答案之外,我还找到了 Visual C++ 团队博客:

http://blogs.msdn.com/vcblog/

具体来说,其中的这篇文章:

https://web.archive.org/web/20190109064523/https://blogs.msdn.microsoft.com/vcblog/2008/02/22/tr1-slide-decks/

很有用。谢谢!

0 投票
4 回答
12697 浏览

c++ - 为什么 C 和 C++ 中存在有向图?

我今天了解到 C99 和 C++ 中有二合字母。以下是一个有效的程序:

我的问题是:它们为什么存在?

0 投票
6 回答
13074 浏览

c - C89、C90 或 C99 中的所有功能都需要原型吗?

为了真正符合标准,C 中的所有函数(除了 main)是否都必须有一个原型,即使它们只是在同一个翻译单元中定义后才使用?

0 投票
3 回答
11484 浏览

c - 如何将字符串可移植地转换为不常见的整数类型?

一些背景知识:例如,如果我想使用 forscanf()将字符串转换为标准整数类型,例如uint16_t,我会使用SCNu16from <inttypes.h>,如下所示:

但是更不常见的整数类型pid_t没有这样的东西。仅支持普通整数类型<inttypes.h>。要以另一种方式转换为可移植printf()的 a pid_t,我可以将其转换为intmax_t并使用PRIdMAX,如下所示:

但是,似乎没有办法可移植scanf()pid_t. 所以这是我的问题:如何便携?

我想到了scanf()ing intmax_t,然后在强制转换为 之前检查该值是否在pid_t's 范围内pid_t,但似乎没有办法获得 的最大值或最小值pid_t

0 投票
4 回答
2843 浏览

c - C99 中的 struct 与 ANSI-C 有什么区别?

此代码在 ANSI-C 中似乎不正确,但在 C99 中可以:

C99 和 ANSI-C 中的 struct 有什么区别?

编辑:我忘记了“a”,我的错。此代码在 C99 模式下使用 gcc 编译正常,但在 splint 上出现解析错误,已知它不支持所有 C99 扩展。

Edit2:这是 splint 的输出:

Edit3:这个文件是 eCos fileio.h(这个片段的最后一行是第 152 行):

0 投票
4 回答
14550 浏览

c - 为什么设置 -std=c99 时 gcc 找不到 random() 接口?

"#include <stdlib.h>"在源代码的顶部做。

示例编译:

当我关闭 -std=c99 时,找不到函数 isfinite()。因此,出于这个和其他原因,我确实想使用 -std=c99 。有什么我错过的技巧吗?

0 投票
1 回答
1151 浏览

iphone - libSystem 库的参考资料

根据文档,iPhone 的核心操作系统包括 libSystem 库,我假设它包含标准 C 库函数,可能还有更多。如何了解 libSystem 中可用的所有功能?

0 投票
4 回答
3227 浏览

c - 如何让夹板忽略我声明变量的位置?

你知道我怎样才能让夹板忽略我声明变量的地方吗?

我知道老派 c 告诉你在每个函数的开头声明变量,但由于我是一个坏人,我喜欢在我使用它们的地方声明东西。一个很好的例子是把 int i; 就在 for(i=0;...) 之前。

我们举一个非常简单的例子

这里夹板和大多数旧的 c 编译器都想移动 int i; 向上一行,或将 {} 放在声明和 for 循环周围。

现在的问题是,我如何关闭此检查?但是保持其他检查好?

谢谢约翰


注意 1:我已经使用 gcc 警告(见下文)作为第一道防线,而 valgrind 作为第二道防线。但是我正在考虑将夹板添加到可以控制我的愚蠢的事物列表中;-) 但是这个检查很烦人,

我使用的 gcc 警告: -Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror

注意 2:我知道这种不良行为可能带来的潜在可移植性问题。但我觉得它增加了可读性,也就是不需要上下跳跃来搜索这种类型的 off 声明更有价值(我们可以在另一个线程中讨论这个)。


更新:更多信息,我将上面的代码放在一个名为 main.c 的文件中。使用的平台是 Ubuntu 8.04 和 gvim 作为编辑器,这是我运行时 splint 的输出:

这又提出了两个我以前没有考虑过的问题。

  1. “与当前值冗余”,当前值是多少?

  2. 为什么它是解析错误而不是警告?


更新::有可能修补夹板来支持这个问题,我还没有尝试过,但我认为这是解决方案。