print 是语言的重要功能。
我从青年时代就学过 Python, JavaScript, C, C++, Rust
我可是身经百战见得多了,主流的哪个语言我没见过。
魔法方法实现复用组件。
class Foo:
    def __str__(self):
        ...
print(Foo())
或者
@dataclass
class Foo:
    ...
print(Foo())
对象 prototype 的 toString 方法
Foo.prototype.toString = () => "xxx"
console.log(Foo());
或者 ES6 引入的 class 语法糖
class Foo{
    toString(){
        ...
    }
}
直接打印 field.
struct Foo{
}
const char * print_foo(Foo const* foo){
    printf("%......", foo->fields, ....);
}
Foo foo = Foo{.fileds=xxx, ...}
print_foo(&foo);
用 sprintf 序列化。但是由于需要 malloc, 还需要返回长度,此处略。
由于 C 采用 %x 格式化,无法自定义格式化。
重载 <<
class Foo{
    public:
        ...
}
ostream& operator<<(ostream& os, const Foo& foo)
{
    os << foo.x << ...;
    return os;
}