编写宏来字符串化结构的内容

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]

是否可以编写一个执行此操作的宏?如果是,那怎么样?

Ree*_*sey 6

您是否有理由将此作为宏?

您应该编写一个函数来执行此操作,而不是使用预处理器.


根据您的目标,有一些选择.该升压格式化库提供了一个很好的工具包构建的格式化字符串.您也可以始终重载operator<<以提供干净的输出.

如果您在纯C中执行此操作,则sprintf系列方法可用于创建格式化输出.