当我阅读BlueZ源代码时,我经常看到像这样定义的char
数组:
// bluez/android/sco-msg.h
static const char BLUEZ_SCO_SK_PATH[] = "\0bluez_sco_socket";
将第一个元素定义为\0
有什么好处呢?
当我阅读BlueZ源代码时,我经常看到像这样定义的char
数组:
// bluez/android/sco-msg.h
static const char BLUEZ_SCO_SK_PATH[] = "\0bluez_sco_socket";
将第一个元素定义为\0
有什么好处呢?
在您的特定情况下,这个数组被用作 PF_LOCAL
socket 的路径名;请参见这里。并且前导 NUL 用于指示该地址是一个抽象地址。来自man 7 unix:
抽象套接字地址通过 sun_path[0] 是空字节('\0')来区分。
这也是为什么第一个元素是 \0
的唯一原因。