为什么这个函数以大写字母显示?

时间:2016-07-28 02:47:20

标签: c

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

https://tools.ietf.org/html/rfc1662

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

ASSERT(sizeof (u16) == 2);

1 个答案:

答案 0 :(得分:4)

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

对于宏名称使用全部大写的惯例。 RFC中代码中使用的ASSERT可能是宏。

C确实有一个标准assert()宏,在<assert.h>中定义(违反了上述惯例 - 哦,好吧)。如果包含宏NDEBUG is defined when`,则禁用该宏(不执行任何操作)。也许RFC的作者并不想处理这种复杂问题。

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

RFC适用于人类读者。例如,

的含义
ASSERT(sizeof (u16) == 2);

对于一个人类读者来说已经足够清楚了,这一切都非常重要。 RFC中的源代码不一定要在没有修改的情况下使用。代码显然至少是C类,但它也可以被认为是一种伪代码。想要使用代码的人可以轻松定义ASSERT()宏,或修改代码以使用标准assert()

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