c++ - 编写一个宏来将结构的内容字符串化

标签 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));

期望的输出:[a: 123, f:456.789, c:AString]

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

最佳答案

是否有理由将其作为宏来执行?

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


根据您的目标,有几种选择。 boost formatting library提供了一个很棒的工具包来构建格式化字符串。你总是可以 overload operator<< 也提供干净的输出。

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

关于c++ - 编写一个宏来将结构的内容字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059881/

相关文章:

c++ - 如何遍历这样的 map ?如何修复 8 个可怕的 C2784 错误?

c - 轻松访问多个结构数组

无法理解结构初始化

在C中将任何变量转换为字符串

c++ - 如何调试挂起(死锁)的 C++ 多线程应用程序?

c++ - 当我在类里面声明一个固定长度的 vector 时,我能避免歧义吗?

php - 将字符串化的 json 结构转换为 PHP 数组

javascript - 为什么我在 JSON.stringify(value, replacer) 中的替换函数在 Angular 应用程序中没有收到 key ?

c++ - 二加二扑克手评估器 : How are the cards mapped to the integers?

c - 在另一个结构中分配结构的内存