如何将 '\0' 转换为 const void*?

How do you convert '\0' to const void*?

我正在将一些代码迁移到 u18,似乎 poisix 写入函数更改了签名

ssize_t write(int fd, const void *buf, size_t nbytes);

电话曾经是 write(output, '[=11=]', 1);

但是我会在 u18 上得到异常 error: invalid conversion from 'char' to 'const void*'

初始化空字符数组的正确方法是什么?

初始化 C 字符串字符数组的正确方法是 "",它是一个空字符串文字,只包含一个空终止符。 ""'[=13=]' 之间的区别是前者有一个内存位置——它是一个数组,它会衰减成一个指针,所以你可以直接给它分配一个指针。而 '[=13=]' 只是一个没有内存位置的字符常量。

但是在 Linux write 的情况下,您不需要提供以 null 结尾的字符串。它通过检查大小参数来工作,并且不会像字符串处理函数那样寻找空终止。

但是如果你想把一个单一的字符——空终止符——写入一个文件,那么正确的方法是:

write(output, "", 1);