追加到字符串宏

时间:2018-10-22 05:50:25

标签: c macros

我有一个程序,可以根据编译时间定义提供不同的功能。我定义了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

是否存在某种“宏观魔术”来实现我想要做的事情?

1 个答案:

答案 0 :(得分:7)

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

作为一种可能的解决方案,您可以定义不同的宏,然后将它们一起使用以定义最终的update mam_zip where statename = 'New York' set catergory = 'Regional' 宏:

OPT_STRING