gpt4 book ai didi

c - 如何在 char 和单字符字符串常量中重用文字?

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:55 24 4
gpt4 key购买 nike

我需要将参数短选项(例如 -F )指定为 charchar[] C代码中的常量。为了最大限度地重用代码,我想声明一个变量,它允许我在一个地方更改值(“文字” - 不是字符串或 char 文字,而是抽象概念意义上的)。我更喜欢一个只在预处理器常量和函数/宏中解决这个问题或只在 c 代码中解决这个问题的解决方案,而不是一个很好的解释为什么必须在两者的混合中解决这个问题。

我试过/ checkout

  • #define FOREGROUND_OPTION_VALUE 'F'这让我很难将其转换为 char[] (作为预处理器常量)(编写一个用 # 进行字符串化的宏会导致 ' 引号也被字符串化
  • 省略'引号让我遇到了创建 ' 的问题报价或创建 char另一种方式。
  • @PedroWitzel 对声明 char[] 的回答并使用第 0 个 char另一个常数。很好,但我更喜欢一种创建 char[] 的方法来自 char因为这强制两者相等(否则我必须添加编译时断言 char[] 不长于 1 )。

对我来说唯一重要的是代码维护,没有别的(比如处理代码的成本(在编译或运行时 - 如果可能的话,没有集中反射(reflect)并且不关心))。

最佳答案

comments 中的讨论之外至 Pedro Witzelanswer ,还有另一种选择:

#define FOREGROUND_OPTION_VALUE 'F'

static const char fg_opt_str[] = { FOREGROUND_OPTION_VALUE, '\0' };

这不是一种常用的初始化字符串的方法,但它是一种有效的方法并且似乎适合您的场景。现在,您可以在需要常量 char(或 int)值的地方使用 FOREGROUND_OPTION_VALUE,在需要单字符字符串的地方使用 fg_opt_str。如果您更改定义的值(例如 f),那么您只需更改一个位置即可让代码继续工作,假设您没有使用 f之前,这符合您的可维护性要求。

关于c - 如何在 char 和单字符字符串常量中重用文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29868286/

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