【发布时间】:2015-04-25 17:13:36
【问题描述】:
我需要在 c 代码中指定一个参数短选项(例如 -F)作为 char 和 char[] 常量。为了最大限度地重用代码,我想声明一个变量,它允许我在一个地方更改值(“文字” - 不是字符串或char 文字,而是抽象概念的意义)。我更喜欢一个专门在预处理器常量和函数/宏中或专门在 c 代码中解决这个问题的解决方案,以很好地解释为什么必须在两者的混合中解决这个问题。
我试过/检查了
- 到
#define FOREGROUND_OPTION_VALUE 'F',这导致我无法将其转换为char[](作为预处理器常量)(编写一个使用#进行字符串化的宏会导致'引号也被字符串化 - 省略
'引号,这让我无法创建'引号或以其他方式创建char。 - @PedroWitzel 的答案是声明
char[]并将第 0 个char用于另一个常量。这很好,但我更喜欢从char创建char[]的方法,因为这会强制两者相等(否则我必须添加一个编译时断言char[]不长于@ 987654337@)。
对我来说唯一重要的是代码维护,没有其他事情(比如处理代码的成本(在编译或运行时 - 如果可能有的话,没有深入反映)。
【问题讨论】:
-
只有在代码处理过程中(字面上)没有成本的情况下,才值得保存一个字符的数据。