c - 为什么这个函数以大写形式显示?

标签 c

IETF RFC 1662 的第 20 页显示了一些用于检查 FCS(帧检查序列)的简单代码。

https://www.rfc-editor.org/rfc/rfc1662

C 是区分大小写的语言。我很好奇为什么函数 assert 显示为大写?

ASSERT(sizeof (u16) == 2);

最佳答案

这只是 RFC 作者的一个(有点奇怪的)选择。

有一个约定,宏名称全部大写。 ASSERT在 RFC 中的代码中使用的可能是一个宏。

C 确实有一个标准 assert()宏,在 <assert.h> 中定义(这违反了上述约定——哦,好吧)。如果宏 NDEBUG is defined when 被禁用(什么都不做) ` 包括在内。也许 RFC 的作者不想处理这种复杂情况。

我不知道 RFC 的完整历史,但代码可能基于 ANSI C 编译器广泛可用之前编写的代码。作者避免使用 1989 标准引入的原型(prototype)。

RFC 是为人类读者准备的。例如,

ASSERT(sizeof (u16) == 2);

对人类读者来说足够清楚,这才是真正重要的。 RFC 中的源代码不一定要在不修改的情况下使用。该代码显然至少类似于 C,但也可以将其视为一种伪代码。想要使用该代码的人可以轻松定义 ASSERT()宏,或修改代码以使用标准 assert() .

纯粹的猜测:也有可能代码最初是为提供预定义 ASSERT() 的实现而编写的。宏,并且没有发现缺乏可移植性。

关于c - 为什么这个函数以大写形式显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38626302/

相关文章:

c - realloc() 似乎影响已经分配的内存

c - 在二维表中开发字符串表

c - 本地主机服务器套接字程序不工作

c++ - 将 unsigned char * buffer 转换为可以接受参数的可调用 void 指针

c - 访问嵌套结构

C - strtok 和 strcmp

c - 在 while 循环中平均整数。 C语言

c++ - 静态编译共享库

c++ - 对编译器功能的误解

在 Linux 上将 CUDA 代码编译为静态库 (.a)