我有一个通用的字符串宏,我想将它转换为长度值字符串,如果可能的话,全部在宏中,所以一切都以.rodata
.
#define PAYLOAD "xyz"
#define PAYLOAD_LEN (sizeof(PAYLOAD)-1)
我想在另一个字符串的一部分中使用 PAYLOAD_LEN 作为字符串,例如
const char lv_macro[] = "<preamble>" PAYLOAD_LEN ":" PAYLOAD;
const char lv_wanted[] = "<preamble>3:xyz"`
我怀疑这是不可能的,我应该将 PAYLOAD_LEN 定义为文字,例如#define PAYLOAD_LEN 3
然后stringify。
我可以但不想忘记.rodata
并在运行时生成它,例如
char lv[64];
snprintf(lv, sizeof lv, "<preamble>%zu:" PAYLOAD, PAYLOAD_LEN);
请注意,这不是这里已经提出和回答的问题,例如,在许多其他问题中。