我正在尝试编写一个宏来扩展结构的内容:
struct Str
{
int a;
float f;
char *c;
};
Str s = {123, 456.789f, "AString"};
#define STRINGIFY_STR(x) ... // Macro to stringify x which is an instance of Str
printf("%s", STRINGIFY_STR(s));
期望的输出:[a: 123, f:456.789, c:AString]
是否可以编写一个执行此操作的宏?如果是,那又如何?
最佳答案
是否有理由将其作为宏来执行?
您应该编写一个函数来执行此操作,而不是使用预处理器。
根据您的目标,有几种选择。 boost formatting library提供了一个很棒的工具包来构建格式化字符串。你总是可以 overload operator<<
也提供干净的输出。
如果您在纯 C 中执行此操作,则 sprintf一系列方法用于创建格式化输出。
关于c++ - 编写一个宏来将结构的内容字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059881/