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

c - 推荐的 Clang 命令行选项

Clang手册似乎正在进行中,所以你能帮我制定最严格的编译 ANSI-C(AKA C89、C90)的命令行选项和相关/有用的警告吗?

Clang 是 C、C++ 和 Objective-C 编程语言的编译器前端。它使用低级虚拟机 (LLVM) 作为其后端。它仍在开发中。它的目标是提供 GNU Compiler Collection (GCC) 的替代品

0 投票
3 回答
1983 浏览

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

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

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

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

0 投票
1 回答
2653 浏览

c - MS VS 2008 和 C99

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

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

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

0 投票
2 回答
5248 浏览

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

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

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

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

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

我在这里想念什么?

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

0 投票
4 回答
19548 浏览

c - 混合声明和代码

当我用 "gcc -o dene -Wall -ansi -pedantic-errors dene.c" 编译函数时,gcc 不会发出错误。(你能看一下以 char .... 开头的行吗,在 if 循环中)

但是,当使用 gcc 重新格式化上述函数时,gcc 会发出该错误;

“dene.c:10:错误:ISO C90 禁止混合声明和代码”

最后一个,gcc 发出以下错误

dene.c:16: 错误: 'char' 之前的预期表达式</p>

dene.c:20: 错误: 'p1' undeclared (第一次在这个函数中使用)

dene.c:20: error: (每个未声明的标识符只报告一次

dene.c:20:错误:对于它出现的每个函数。)

问题是为什么它们之间存在差异。

0 投票
1 回答
152 浏览

c - 在 C 中将多维数组复制到另一个数组时出现语法错误

我们正在编写一个 ST269 微控制器,它有两个红外距离传感器。为了校准这些传感器,我们为每个传感器制作了一张表格,其中包含我们测量的距离和我们从 ADC 获得的相应值。

现在我们想使用一个函数来近似两者之间的值。所以我们定义了两个二维数组(每个传感器一个)作为全局变量。然后在我们的函数中,我们想要将我们想要使用的一个数组复制到一个工作数组中并近似我们的值。

所以这里是代码:

此代码位于名为 sensor.c 的文件中。我们应该没有在 sensor.h 中写任何关于全局数组的内容吗?sensor.h 当然包含在我们的 main.c 中,并在那里调用该函数。

我们还尝试通过复制数组

memcpy(working_array, ir_werte_li, sizeof(working_array));

在我们这样做的每一种方式中,我们都会得到一个

在我们声明的那一行

而且我很确定这一行中没有语法错误:)

我最后一次用 C 编码是几年后的事了,所以我不确定我们尝试这样做的方式是否好。也许我们可以通过使用指针而不是真正复制数组或其他东西来解决这个问题。所以请帮帮我,我会很感激你在这方面的意见。

0 投票
3 回答
38399 浏览

linux - 如何使用 make 和编译为 C99?

我正在尝试使用 Makefile 编译 linux 内核模块:

这给了我:

我需要切换到C99。阅读后我注意到我需要添加一个标志 -std=c99,不确定应该添加到哪里。

如何更改 Makefile 使其编译为 C99?

0 投票
2 回答
1826 浏览

c - 如何知道cl.exe应用的是c89还是c99?

我刚刚在这篇文章中遇到了这个词,

如何检查我的编译器实际使用了哪个规则?

或者是否可以指定规则cl.exe

0 投票
3 回答
3218 浏览

c - 如何在 gcc 中强制执行 C89 风格的变量声明?

我的代码库主要是 C 和一点 C++,主要是用 gcc 构建的,但偶尔需要用 MSVC 构建。微软的 C 编译器仍然与 C89 差不多,只是有一些小的扩展,而且它仍然不支持混合代码和变量定义à la C++/C99。所以我需要找到一种方法来防止开发人员在使用 gcc 时编写乱序代码/变量定义,否则构建随后会与 MSVC 中断。如果我使用gcc -std=c89,那么一切都会中断,因为不允许使用 C++ 样式的注释(可能还有其他问题,但我没有进一步研究这个问题)。如果我使用gcc -std=gnu89那么乱序代码/变量定义是允许的,所以这对我也没有帮助。有任何想法吗 ?我想我只需要类似的东西gcc -std=c99 -fno-inline-variable-definitions,如果存在这样的选项。

0 投票
2 回答
255 浏览

c - 网络 C 代码中的数据损坏

我正在使用 Windows 和 ANSI-c,我有一个应用程序可以从网卡中嗅探数据,然后对其进行解码并通过 UDP 发送到其他应用程序。问题是我的应用程序开始时工作正常,但一段时间后,它的所有变量 int、float 和字符串都已损坏,我已经检查了很多次,但无法找出问题所在。当我将数据直接传送到我的 IP 而不从网络嗅探数据时,这个应用程序工作得非常好。

任何人都可以建议我如何解决这个问题,任何测试工具或其他可以提供帮助的工具吗?