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

C 为什么这个函数用大写字母显示?,c,C,IETF RFC 1662第20页显示了一些检查FCS(帧检查序列)的简单代码 C是一种区分大小写的语言。我很好奇为什么函数assert显示为大写 ASSERT(sizeof (u16) == 2); 这只是RFC作者的一个选择(有点奇怪) 宏名称有一个使用所有大写的约定。RFC中代码中使用的ASSERT可能是一个宏 C确实有一个标准的assert()宏,在中定义(这违反了上述约定——哦,好吧)。如果在包含`时定义了宏NDEBUG,则该宏将被禁用(不执行任何操作)。也许RFC的作者不想处理这

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

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

ASSERT(sizeof (u16) == 2);
这只是RFC作者的一个选择(有点奇怪)

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

C确实有一个标准的
assert()
宏,在
中定义(这违反了上述约定——哦,好吧)。如果在包含`时定义了宏
NDEBUG,则该宏将被禁用(不执行任何操作)。也许RFC的作者不想处理这个复杂问题

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

RFC是为人类读者设计的。例如,

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

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

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

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

C确实有一个标准的
assert()
宏,在
中定义(这违反了上述约定——哦,好吧)。如果在包含
`时定义了宏
NDEBUG,则该宏将被禁用(不执行任何操作)。也许RFC的作者不想处理这个复杂问题

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

RFC是为人类读者设计的。例如,

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


纯粹的猜测:也有可能代码最初是为提供预定义的
ASSERT()
宏的实现编写的,没有发现缺乏可移植性的问题?我没有看到任何地方说代码是C。我认为这只是为了说明问题的伪C。但是我还没有读过RFC,所以这是我在浏览之后的推测。这不是有效的C代码(除非我遗漏了一些标准,允许
main()
没有返回类型和参数作为有效的函数声明)@KenWhite:C89允许。将宏设置为全大写并不少见。RFC(脚注7、8和9以及acknolwedgements)中有一些提示指出了示例代码的来源。理论上,如果你可以访问那些旧的出版物,你可以把代码放到上下文中,看看他们为什么这样做。这是C吗?我没有看到任何地方说代码是C。我认为这只是为了说明问题的伪C。但是我还没有读过RFC,所以这是我在浏览之后的推测。这不是有效的C代码(除非我遗漏了一些标准,允许
main()
没有返回类型和参数作为有效的函数声明)@KenWhite:C89允许。将宏设置为全大写并不少见。RFC(脚注7、8和9以及acknolwedgements)中有一些提示指出了示例代码的来源。理论上,如果您可以访问那些旧的出版物,您可以将代码放到上下文中,看看他们为什么这样做。