gpt4 book ai didi

c - "static const"vs "#define"vs "enum"

转载 作者:行者123 更新时间:2023-11-30 16:23:57 26 4
gpt4 key购买 nike

以下 C 语言语句中,哪一个更好使用?

static const int var = 5;

#define var 5

enum { var = 5 };

最佳答案

这取决于您需要该值的用途。您(以及迄今为止的其他人)忽略了第三种选择:

  1. 静态 const int var = 5;
  2. #define var 5
  3. 枚举 { 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) - static const。

关于c - "static const"vs "#define"vs "enum",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com