问题标签 [c89]

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 投票
3 回答
3512 浏览

c - C90 - C99: register struct

is "register struct" legal? In terms of standards and (separated from standards) in Gcc?

0 投票
3 回答
1828 浏览

c - 在 Windows 平台上使用 ansi-c 可以获得高达毫秒精度的系统时间吗?

我需要获得毫秒精度我看一下这个问题,但我正在使用 Windows:它给出了 POSIX 函数的链接错误。

如果我能以毫秒精度获得 1970 年以来的 UTC 时间,那就太好了。

0 投票
2 回答
217 浏览

iphone - ansi c应用程序的二进制文件可以在iPhone上运行吗?

我有一些用 ANSI C 编写的应用程序。我能在 iPhone 上运行这些应用程序的二进制文件吗?如果不是直接,还有其他有用的方法吗?我不想重写应用程序。

0 投票
4 回答
8351 浏览

c - 使用 ANSI C 实现工厂模式

谁能指出我如何使用 ANSI C 实现工厂模式的参考?如果涵盖更多模式,那将是一个奖励。在 C++ 中做这件事对我来说是微不足道的,但由于 C 没有类和多态性,我不太确定如何去做。我正在考虑拥有一个包含所有常见数据类型的“基本”结构,然后使用 void 指针,并以与顶部基本结构相同的顺序定义结构的所有公共部分?还是不能保证它们在内存中以相同的方式结束?

0 投票
1 回答
408 浏览

c - 在 ANSI C 中伪造/构建 TCP 数据包

在不使用第三方工具的情况下,我如何在 ANSI C 中制作 TCP(甚至是 UDP)数据包?我希望能够设置所有选项标志、源 IP 地址等。所以完全控制。在网上没有找到任何关于它的好文字。或者我只是使用了错误的搜索条件。

0 投票
1 回答
394 浏览

c - 如何检测 C 中的一个或多个键的组合?

如何检测 ANSI C 和/或 Win32 SDK 中的一个或多个按键组合?

例如:如何检测 CTRL+ALT+DEL 是否被按下?

请给我一些源代码或任何网络链接。

请注意,我使用的是轮询机制,而不是事件。

我需要在 win32 控制台模式下进行。

0 投票
3 回答
3278 浏览

c - 在 C89 中使用可变参数函数而不传递参数数量或最终参数?

假设我有一个可变参数函数foo(int tmp, ...),当调用 foo 函数时,我需要知道有多少个参数。我知道有两种方法可以找出有多少参数:

  1. 调用 foo 时使用最后一个参数,例如 -1,因此您的函数调用将是这样的:foo(tmp, 1, 2, 9, -1)当您在 foo 内部并且 va_arg 调用返回 -1 时,您知道您已经阅读了所有函数参数

  2. 在 foo 中再添加一个参数,程序员将拥有参数总数,因此您将像这样调用 foo:foo(tmp, 5, 1, 2, 3, 4, 5)foo(tmp, 2, 7, 8)

我曾经遵循第一种方式,曾经有以下错误。使用代码:

其中 expr_of_type 是一个可变参数函数,并且正在检查 expr(第一个参数)是否是以下类型之一(boolexpr_e 或 new_table_e 或 nil_e 具有枚举类型的所有类型)。一不小心写到:

我忘记了 nil_e 和 -1 之间的逗号,因为 nil_e 有一个枚举类型,nil_e - 1 是一个有效的表达式,并且因为 nil_e 不是 0 尝试获取 expr_of_type 参数时给定的可变参数函数没有找到 -1 作为最后一个参数和继续搜索创建了一个错误,我花了一些时间才发现。

我也觉得第二种方法不好,因为在从可变参数函数中添加或删除一个参数时,您需要更改包含总参数数量的参数。

在寻找使用/创建可变参数函数的更好方法时,我发现可变参数宏可以解决我在使用第一种方法时遇到的错误。但可变参数宏可用于 C99 标准。我一直在寻找在 C89 中使用/创建可变参数函数的更好方法。有任何想法吗?

0 投票
2 回答
2557 浏览

c - ANSI C 实现中的 HAT-trie?

我正在寻找在一些免费许可下发布的 ANSI C HAT-trie 实现。我还没有找到一个。您能否指出一些独立的实现或使用 HAT 的程序尝试至少稍微了解如何以正确的方式实现它,好吗?

关于 HAT-trie 的原始论文可以在这里找到: http ://crpit.com/confpapers/CRPITV62Askitis.pdf

PS:如果自写上述论文以来,更快的缓存意识数据结构非常适合字符串,请指出我的论文或示例源代码。

0 投票
7 回答
13958 浏览

c - 一个好的 C 等价于 STL 向量?

我注意到在我们的代码库中的几个地方,我们使用动态扩展数组,即一个基本数组加上一个元素计数器和一个“最大元素”值。

出于通常的面向对象的原因,我想做的是用通用的数据结构和实用程序函数替换它们。数组元素可以是基本数据类型或结构,我需要快速随机访问元素,最好是类型安全的实现。

所以,基本上,我想使用的是 STL 向量,但代码库仅限于 C89,所以我必须想出别的东西 :-)

我想了想,草拟了这个初稿,只是为了展示我的目标:

......但是,之前必须有其他人这样做过。我知道 FreeBSD sys/queue.h 实现了一些不同队列的类似概念,但我找不到类似的数组。

这里有人更聪明吗?

0 投票
3 回答
142818 浏览

c - C:将double转换为float,保留小数点精度

我想在C中将double转换为float,但想尽可能保留小数点而不做任何更改...

例如,假设我有

如果我错了,现在纠正我,我知道浮点精度大约是点后的 5 个数字。我可以在点之后得到这五个数字,就像双精度一样吗?使上述结果如下:

它应该打印

精度限制(我假设为 5)之后的所有数字都将被截断。