如何将 '\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);
我正在将一些代码迁移到 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);