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

c - Visual Studio 的 C99 复杂支持

我想使用 C99 中定义的复数,但我需要支持不支持它的编译器(想到 MS 编译器)。

我不需要很多功能,在没有支持的编译器上实现所需的功能并不太难。但是我很难实现“类型”本身。理想情况下,我想做类似的事情:

但我不确定如果编译器无法识别“float complex”,我会看到如何执行此操作。我实际上认为这是不可能的,但Dinkumware的 C 库似乎另有说明。解决办法是什么 ?我不介意使用函数/宏对类型进行操作,但我需要一种将值分配给复数的方法,并以与 C99 兼容的方式取回其实部/虚部。

解决方案

我最终做了这样的事情:

对于类型定义,如下定义一组复杂函数:

这有点复杂,但这使我能够在可用时轻松重用 C lib 函数,并且可以通过代码生成器部分自动化。

0 投票
3 回答
8684 浏览

c++ - 哪里在 Visual Studio 2005 中?

我想在 Visual Studio 项目中使用 C99 头文件 inttypes.h(我想打印 64 位数字)。

但是,我的安装中似乎不存在此文件。

这不是VS2005的一部分吗?有没有其他选择?

0 投票
5 回答
7796 浏览

c - 为什么没有新的(特定于位宽的)printf() 格式选项字符串作为 C99 的一部分掺杂?

在研究如何printf()用 C 语言处理跨平台格式字符串时(也就是说,考虑到我希望每个整数参数printf()应该具有的位数),我遇到了 .wikipedia 文章的这一部分printf()。本文讨论了可以传递给格式字符串的非标准选项printf(),例如(似乎是 Microsoft 特定的扩展):

它继续指出:

ISO C99 包含 inttypes.h 头文件,其中包含许多用于与平台无关的 printf 编码的宏。

...然后列出可以在所述标题中找到的一组宏。查看头文件,要使用它们,我必须写:

我的问题是:我错过了什么吗?这真的是标准的 C99 方法吗?如果是这样,为什么?(虽然我并不惊讶我从未见过以这种方式使用格式字符串的代码,因为它看起来很麻烦......)

0 投票
1 回答
247 浏览

c++ - 变量中的点?VC9 在构建 beecrypt 时出现解析错误

我想在VS2008下编译beecrypt库。但以下几个结构会产生语法错误(C2059 语法错误:'.'):

VC++ 不接受开头的点。如果我对上面的内容进行评论,我稍后会收到链接错误(LNK2001 unresolved symbol _md5) - 所以我想它必须取消评论。

这是什么结构?我需要它做什么?我如何告诉 VS2008 编译它?

0 投票
6 回答
8887 浏览

c - 人们使用什么技术/策略在 C(不是 C++)中构建对象?

我对打算在 C 中使用的对象特别感兴趣,而不是构成解释语言(如 python)核心的对象实现。

0 投票
9 回答
37512 浏览

c - 什么是 printf 的正确用途来显示用 0 填充的指针

在 C 中,我想使用 printf 来显示指针,以便它们正确排列,我想用 0 填充它们。

我的猜测是这样做的正确方法是:

这可行,但这个 gcc 抱怨以下消息:

我已经用谷歌搜索了一下,以下线程是关于同一主题的,但并没有真正给出解决方案。

http://gcc.gnu.org/ml/gcc-bugs/2003-05/msg00484.html

读起来,gcc 抱怨的原因似乎是我建议的语法在 C99 中没有定义。但我似乎找不到任何其他方式以标准批准的方式做同样的事情。

所以这是双重问题:

  • 我的理解是否正确,这种行为不是由 C99 标准定义的?
  • 如果是这样,是否有标准批准的便携方式来执行此操作?
0 投票
4 回答
368 浏览

c99 - 可以使用打印到 FILE* 的输出例程在 C 中构建字符串吗?

我有一种不好的感觉,这个问题的答案是“不”,但我想把它扔在那里,以防有人有任何聪明的想法。

我有一组输出例程,它们采用复杂的数据结构并以文本格式打印它。他们的原型如下:

我这样写是为了获得高效的缓冲输出到终端、文件、网络等。

不幸的是,据我所知,使用标准 C99,我无法使用这些相同的例程在内存中构建字符串。

所以我的问题是:

  1. 有什么聪明的方法可以有效地使用 fputs()、fprintf() 等输出到字符串?
  2. 如果没有,是否有更好的范例可以有效地进行缓冲文件输出和字符串构建?我能想到的最好的方法是使用 vtable(而不是 FILE*)拥有自己的结构。vtable 将有一个输出函数,可以附加到字符串或调用 fwrite。但是我还必须创建 printf 包装器。

还有其他聪明的想法吗?

编辑:我发现它fmemopen()是 POSIX.1-2008 的一部分(参见:fmemopen())但没有得到广泛支持,至少根据 GNU libc 手册页。

0 投票
1 回答
1860 浏览

c - 如何配置 Eclipse 以使用 -std=c99 进行编译?

问题在标题中。在 Windows Vista 上使用 GCC 版本 3.4.5 和最新版本的 Eclipse C/C++ IDE(不确定究竟是哪个版本,因为很难确定哪个版本是整个 IDE 的版本,但我两周前下载了它所以它不可能那么旧)。

0 投票
3 回答
4216 浏览

c - C99 不支持函数重载是有原因的吗?

显然(至少根据gcc -std=c99)C99 不支持函数重载。不支持 C 中的某些新特性的原因通常是向后兼容性,但在这种情况下,我想不出函数重载会破坏向后兼容性的单一情况。不包括此基本功能的原因是什么?

0 投票
8 回答
143932 浏览

c - 状态机教程

我只是想知道是否有人知道互联网上有一些用于开发状态机的好教程。还是电子书?

我开始在状态机上工作,只需要一些通用的东西来让我开始。