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

c - 如何在 ansi C90 中捕获运行时错误

我正在使用库 Function ConnectToTCPServer。当主机不可达时,该函数超时。在这种情况下,应用程序崩溃并出现以下错误:“NON-FATAL RUN-TIME ERROR: "MyClient.c", line 93, col 15, thread id 0x000017F0: Library function error (return value == -11 [0xfffffff5]) . 超时错误"

Errorcode 11 是一个超时错误,所以这可能在我的应用程序中经常发生 - 但是应用程序崩溃 - 我想捕捉这个错误而不是让我的应用程序崩溃。

如何在 Ansi C90 中捕获此运行时错误?

编辑:这是当前使用的代码片段:

回调函数永远不会被调用。我的服务器没有运行,所以 ConnectToTCPServer 将超时。我会怀疑回调被调用 - 但它从未被调用。

编辑2:实际上没有调用回调函数,ConnectToTCPServer的返回值包含相同的错误信息。我认为ConnectToTCPServer抛出此错误可能是一个错误。我只需要抓住它并将其放入 C90 中即可。有任何想法吗?

编辑 3:我测试了回调函数,在我的服务器在线的罕见情况下,实际调用了回调函数 - 这无济于事,因为发生错误时不会调用回调。

0 投票
1 回答
5660 浏览

gcc-warning - 编译 C90 代码时在 gcc 编译器中收到警告“ISO C90 禁止可变大小数组”

我正在 gcc 中编译我的 C90 c 代码。我ISO C90 forbids variable-size array在做出类似声明时收到警告

int symbols[nc];

其中 nc 是整数,其值是从输入文件中读取的。输入文件上的值是多种多样的,所以我不能保持一个恒定的值。我怎样才能摆脱它?是否确实有必要解决此警告,或者我们可以简单地忽略它?

提前致谢。

0 投票
3 回答
817 浏览

c - 在 C90 中格式化输入(删除前导零和小数位)?

我想用这个程序做的是输入一个任意数字一次读取一个字符,然后将其格式化为一个 int 以便我可以使用它(不想使用 printf 格式)另外,我只是允许使用 getchar 和 printf 进行此分配。

样本输入:0001234.5
编辑期望输出:<1234>(5) 实际输出:0001234050

我觉得我正处于顿悟的风口浪尖,但我遇到了障碍,请帮忙?

*编辑我忘了提到我要的 END 结果是将非十进制数括在 <1234> 中,将十进制数括在括号中 (5)

0 投票
2 回答
392 浏览

c - 带有基本参数的 strtod

我不想不必要地重新发明轮子,但我一直在寻找 strtod 的功能,但有一个基本参数 (2,8,10,16)。(我知道 strtoul 允许使用基本参数,但我正在寻找返回类型 double)。任何正确方向的建议/指示?谢谢。

0 投票
7 回答
37365 浏览

c - 如何找到我当前编译器的标准,比如它是 C90 等

我正在使用 Linux 机器。是否有任何系统命令可以找到我正在使用的 C 编译器所遵循的标准?

0 投票
6 回答
1802 浏览

c - C 的哪些部分最便携?

我最近阅读了对 Lua 联合创始人 Luiz H. de Figueredo 和 Roberto Ierusalimschy 的采访,他们讨论了 Lua 的设计和实现。至少可以说非常有趣。然而,讨论的一部分让我想到了一些事情。Roberto 将 Lua 称为“独立应用程序”(也就是说,它是纯粹的 ANSI C,不使用操作系统中的任何内容。)他说,Lua 的核心是完全可移植的,并且由于它的纯洁性,它可以被大量移植更容易,甚至从未考虑过的平台(例如机器人和嵌入式设备)。

现在这让我想知道。C 通常是一种非常可移植的语言。那么,C 的哪些部分(即标准库中的部分)是最不可移植的?哪些可以在大多数平台上运行?是否应该只使用一组有限的数据类型(例如避免short和可能float)?FILEstdio系统呢?mallocfree?Lua 似乎避免了所有这些。这是把事情推向极端吗?还是它们是可移植性问题的根源?除此之外,还可以做哪些其他事情来使代码具有极强的可移植性?

我问所有这些的原因是因为我目前正在用纯 C89 编写一个应用程序,并且它尽可能便携是最佳选择。我愿意在实现它时采取中间道路(足够便携,但没有那么多我必须从头开始编写所有内容。)无论如何,我只是想看看一般来说什么是编写最好的 C 代码的关键。

最后一点,所有这些讨论都只与 C89 相关。

0 投票
4 回答
3562 浏览

c - 如何在 C90 中分配可变大小的数组?

我需要为符号分配一个可变大小,

typedef int SYMBOL

我按照以下方式做了

SYMBOL test[nc], 这里 nc 是一个整数。但这给了我以下警告:

ISO C90 forbids variable-size array

我怎么能在没有收到警告的情况下做到这一点?

谢谢, 特纳

0 投票
4 回答
35560 浏览

c - 将 M_PI 与 C89 标准一起使用

我正在使用 C 并试图访问常量 M_PI (3.14159 ...)。我已导入 math.h 头文件,但 M_PI 常量仍未定义。通过对 StackOverflow 的一些搜索,我发现我需要添加#define _USE_MATH_DEFINES到我的代码中(参见下面的示例代码)。这在正常编译时工作正常,但我需要能够使用std=c89标志编译我正在做的工作。

我应该如何从一些 C89 代码访问 M_PI?

0 投票
2 回答
403 浏览

c - ANSI C 不允许在固定时间段后在同一位置打印每个字符吗?

我正在尝试生成要在控制台上打印的随机数。我在 Linux 上用 C 语言编程。我想在每个数字的一​​秒时间间隔后在一个地方打印所有数字。
我正在使用sleep()停止“时间间隔”。我试过了\b\r但没有任何效果。
我只是想让它运行,例如

0 投票
5 回答
20468 浏览

c - 在 MS Visual C++ 中启用 VLA(可变长度数组)?

如何启用 VLA、C99 中定义的可变长度数组、MS Visual C++ 或根本不可能的使用?

是的,我知道 C++ 标准基于 C89,并且 VLA 在 C89 标准中不可用,因此在 C++ 中不可用,但 MSVC++ 也应该是 C 编译器,可以使用 / TC 编译器参数 ( Compile as C Code (/TC))。但是这样做似乎并没有启用 VLA,并且编译过程在构建为 C++ ( Compile as C++ Code (/TP)) 时会失败并出现相同的错误。也许 MSVC++ C 编译器只兼容 C89,或者我遗漏了一些东西(一些特殊的构造或编译指示/定义)?

代码示例:

编译错误:

错误 C2057:预期的常量表达式

错误 C2466:无法分配常量大小 0 的数组

错误 C2133:“pc”:未知大小