C 为什么这个函数用大写字母显示?
IETF RFC 1662第20页显示了一些检查FCS(帧检查序列)的简单代码 C是一种区分大小写的语言。我很好奇为什么函数assert显示为大写C 为什么这个函数用大写字母显示?,c,C,IETF RFC 1662第20页显示了一些检查FCS(帧检查序列)的简单代码 C是一种区分大小写的语言。我很好奇为什么函数assert显示为大写 ASSERT(sizeof (u16) == 2); 这只是RFC作者的一个选择(有点奇怪) 宏名称有一个使用所有大写的约定。RFC中代码中使用的ASSERT可能是一个宏 C确实有一个标准的assert()宏,在中定义(这违反了上述约定——哦,好吧)。如果在包含`时定义了宏NDEBUG,则该宏将被禁用(不执行任何操作)。也许RFC的作者不想处理这
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)中有一些提示指出了示例代码的来源。理论上,如果您可以访问那些旧的出版物,您可以将代码放到上下文中,看看他们为什么这样做。