在C语言的下列语句中,哪一个更适合使用
静态常量int var=5;
或
定义变量5
或
枚举{var=5};
这取决于你需要的价值。你(以及目前为止的其他人)忽略了第三种选择:
static const int var=5#定义变量5enum{var=5}
忽略有关名称选择的问题,然后:
- 如果需要传递指针,则必须使用(1)
- 因为(2)显然是一个选项,所以不需要到处传递指针
- (1)和(3)在调试器的符号表中都有一个符号,这使得调试更容易。更可能的是(2)没有符号,让你想知道它是什么
- (1) 不能用作全局范围内数组的维度;(2)和(3)都可以
- (1) 不能用作函数作用域中静态数组的维度;(2)和(3)都可以
- 在C99下,所有这些都可以用于本地阵列。从技术上讲,使用(1)意味着使用VLA(可变长度数组),尽管“var”引用的维度当然会固定为大小5
- (1) 不能在switch语句等位置使用;(2)和(3)都可以
- (1) 不能用于初始化静态变量;(2)和(3)都可以
- (2) 可以更改您不希望更改的代码,因为它被预处理器使用;(1)和(3)都不会有像那样意想不到的副作用
- 您可以检测预处理器中是否设置了(2);(1)和(3)都不允许这样做
因此,在大多数情况下,更倾向于使用“枚举”而不是其他选项。否则,第一个和最后一个要点很可能是控制因素——如果你需要同时满足这两个要点,你就必须更加认真地思考
如果您询问C++,那么您将使用选项(1)-静态const -每次。