问题标签 [ansi-c]

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 回答
1380 浏览

c-preprocessor - 如何抑制 cpp 中的“缺少终止字符”警告?

我正在尝试使用 cpp(ANSI-C 预处理器)来预处理一些非 ANSI-C 文件。

这些文件包含 PicoBlaze 语法中的汇编指令。PicoBlaze 用于'd注释文字的基数。我想用 cpp 预处理我的文件。

我得到几个:

警告。如何禁用'cpp 中(或所有字符)的终止字符检查?

这是我的命令行调用:

0 投票
3 回答
83 浏览

c - 如果 / 或 % 运算符的一个或两个操作数是负数,结果是否会由实现定义?

例如,这些表达式的值是多少?它们是否依赖于编译器?

0 投票
2 回答
2410 浏览

c - pow(1,0) 返回 0?

为什么会这样:

回报0?我希望它会回来1

0 投票
4 回答
325 浏览

c - 所有结构标识符都自动向前声明

在回答警告:从不兼容的指针类型为链接列表数组赋值时,我注意到任何带有struct关键字的未声明标识符都被视为前向声明的标识符。

例如下面的程序编译得很好:

我的问题:哪个规则指导C编译器将 undeclared struct identifiers 视为前向声明的不完整struct类型?

0 投票
1 回答
215 浏览

c - 枚举常量的平移限制

我有一个关于枚举常量的 C (定义在 ANSI/ISO 9899:X 标准系列中)的翻译限制的非常具体的问题。

我有几千个可单独识别的数据源,我想列举一下。此外,我想尊重 C 标准的最小翻译限制,因为实际限制是实现定义的,超过这些限制是未定义的行为(请参阅是否未定义的行为超出了翻译限制,是否有检查工具可以找到它?)。

我知道同一枚举中的枚举常量数量(C90:127)、同一块中指定的标识符数量(C90:127)和翻译单元中的外部标识符(C90:511)存在翻译限制。

我认为枚举常量没有链接(请纠正我),当然我可以将它们置于块范围之外......因此将任何翻译限制约束置于以下模式(除了目标平台的整数类型的限制,当然还有一个枚举中的常量数量) - 如果是这样,为什么?

注意:切换到 #define 将无济于事,因为定义的宏标识符 (C90: 1024) 也存在翻译限制。我将被迫以复杂的方式#undef,可能使用复杂的#include 模式。

0 投票
4 回答
121 浏览

c - 后增量运算符是否保证立即运行?

假设我有以下代码:

返回值后立即发生增量?是否保证第一个参数为0,第二个参数为1?

0 投票
1 回答
199 浏览

c - 函数和结构名称的命名约定以及根据 ANSI C 标准

我需要知道函数和结构名称的命名约定以及根据 ANSI C 标准。

我读到第一个字母应该以小写字母开头。我可以使用驼峰式命名还是应该在两个单独的之间使用下划线。例如: print_char 或 printChar 我需要知道标准状态是什么?

0 投票
2 回答
84 浏览

c - 将收到的可变数量的参数传递给另一个函数

在你说它是重复的之前,我已经读过这个:如何将可变数量的参数从一个函数传递给另一个函数?

我有这样的功能:

还有一个像这样的函数,不是我的,我从第三方库中使用它:

如您所见,我要做的只是向该函数添加一个互斥锁以使其成为线程安全的,我知道我可以使用va_list但在这种情况下我无法更改第二个函数的代码,因为它位于库中我只有 .h 文件。

那么,有没有办法实现这一目标?

0 投票
1 回答
157 浏览

c - 将 typedef 从标头传递到源 - C

我有以下main.c文件:

lista.h

最后是lista.c,即:

即使在包含头文件之后,我也会收到三个错误,上面写着: 未知类型名称“点头”

如何使 lista.h 中的 typedef 可以在 lista.c 上看到?

我只是无法弄清楚这里发生了什么。

0 投票
1 回答
56 浏览

struct - 发现结构初始化是否不会修改所有成员

考虑以下代码:

我正在寻找一种生成错误(编译或运行时)的方法,以表明结构初始化没有明确地“触及”所有结构成员。结构中有 5 个整数,但 'mystruct_init' 只有 4 个值。我知道最后一个成员(mystruct_init.b)将为零,但我需要某种警告/错误来通知程序员这个错误。这必须在一个非常旧的编译器上工作(甚至可能不符合 ansi-c)。