Коли я читаю вихідний код 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
сокета; дивіться тут . І провідний NUL використовується, щоб вказати, що адреса є абстрактною. Від man 7 unix :
абстрактна адреса сокета відрізняється тим, що sun_path [0] є нульовим байтом ('\ 0').
І це єдина причина, чому є перший елемент \0
.