gpt4 book ai didi

c - 附加到字符串宏

转载 作者:行者123 更新时间:2023-12-02 14:55:56 26 4
gpt4 key购买 nike

我有一个程序根据编译时定义提供不同的功能。我定义了 OPT_STRING,它包含所有可能的命令行参数(用于 getopt_long)。我一直在寻找一种聪明的方法来根据编译时定义更改它的定义。我想到了这个:

#define OPT_STRING "haspvb"

#ifdef HAVE_WIFI
#define OPT_STRING OPT_STRING "mw" // => "haspvb" "mw"
#endif // HAVE_WIFI

#ifdef HAVE_IMEI
#define OPT_STRING OPT_STRING "i" // => "haspvb" "mw" "i" or "haspvb" "i"
#endif // HAVE_IMEI

但是,这会导致编译错误:

error: "OPT_STRING" redefined

是否有某种“宏观魔法”可以实现我想要做的事情?

最佳答案

您不能“附加”到宏,这根本不可能。

作为一种可能的解决方案,您可以定义不同的 宏,然后一起使用它们来定义最终的OPT_STRING 宏:

#define OPT_STRING_BASE "haspvb"

#ifdef HAVE_WIFI
#define OPT_STRING_WIFI "mw"
#else
#define OPT_STRING_WIFI
#endif // HAVE_WIFI

#ifdef HAVE_IMEI
#define OPT_STRING_IMEI "i"
#else
#define OPT_STRING_IMEI
#endif // HAVE_IMEI

#define OPT_STRING (OPT_STRING_BASE OPT_STRING_WIFI OPT_STRING_IMEI)

关于c - 附加到字符串宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52923070/

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