Fea*_*lie 0 c++ struct stringify
我正在尝试编写一个宏来扩展结构的内容:
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));
Run Code Online (Sandbox Code Playgroud)
期望的输出:[a:123,f:456.789,c:AString]
是否可以编写一个执行此操作的宏?如果是,那怎么样?
您是否有理由将此作为宏?
您应该编写一个函数来执行此操作,而不是使用预处理器.
根据您的目标,有一些选择.该升压格式化库提供了一个很好的工具包构建的格式化字符串.您也可以始终重载operator<<以提供干净的输出.
如果您在纯C中执行此操作,则sprintf系列方法可用于创建格式化输出.