为什么C编译器没有检查枚举?

前端之家收集整理的这篇文章主要介绍了为什么C编译器没有检查枚举?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下文字摘自 C Programming Language,2nd Edition,由C语言的创建者撰写(所以我认为它是正确的):

Although variables of enum types may be declared,compilers need not check that what you store in such a variable is a valid value for the enumeration.

我有些疑惑:

>对于C语言中的哪些情况,编译器不会检查枚举的值?
>由于某种原因未检查枚举常量.为什么不?是什么原因?
>由于编译器未检查枚举,是否使用枚举容易出错?请解释.

解决方法

>枚举就像一个花哨的整数,并且它比定义整个加载的常量或预处理器宏作为要存储的常量值的名称更好,因为编译器(或编辑器)可以检查您是否使用了正确的名称和值以正确的类型.另一方面,只是一个int,没有什么可以阻止你输入一个你没有命名的值,这偶尔会有用. >在每种情况下都无法检查它们.如果将两个数字相加以获得将放入枚举类型变量中的值,该怎么办?它可以是在运行时生成的任何值,因此无法检查(至少没有大量开销). > C中的所有内容都不安全;几乎没有编译器可以完全阻止你滥用的功能.枚举是安全的,因为它们可以有效地防止程序员错误和混乱,而不是因为它们阻止你做一些愚蠢的事情.

猜你在找的C&C++相关文章