一、描述问题:
- 因为我无法重写全局的 println 函数,所以我无法自己追加 \x00 结尾
- 因为 println 是一次函数调用,而一次 println 会调用多次 print_char
- 如果调用多次 print_char,我无法知道到底调用了几次 println(“example_str_with_\x10”)。
二、我的需求:
我希望在浏览器中,使用console.log 来替代 println,但是因为我只能重写 print_char 而不是 println,这就导致我无法知道 println 到底调用了几次。如果我只是简单地使用 \n 来分割也不合理,因为 println打印的内容本身就可能包含多个回车符
三、可能的实现方案:
方案A:提供更加丰富的对构建阶段的hook能力,从而可以编译期间对 println 函数做替换
方案B:提供 config_println(end~ : String) → Unit 函数,可以自定义 println 的默认追加的结尾符号(默认是 \x10)
方案B是最简单的,针对性解决问题,带来的影响也小。
方案A可以提供最大的灵活性和性能,我可以直接返回字符串内存的 地址、长度,然后直接在runtime 侧直接实现打印。