Wenn ich BlueZ- Quellcode lese , sehe ich oft charArrays, die wie folgt definiert sind:
// bluez/android/sco-msg.h
static const char BLUEZ_SCO_SK_PATH[] = "\0bluez_sco_socket";
Was nützt es, das erste Element als zu definieren \0?
Wenn ich BlueZ- Quellcode lese , sehe ich oft charArrays, die wie folgt definiert sind:
// bluez/android/sco-msg.h
static const char BLUEZ_SCO_SK_PATH[] = "\0bluez_sco_socket";
Was nützt es, das erste Element als zu definieren \0?
Antworten:
In Ihrem speziellen Fall wird dieses Array als Pfadname für einen PF_LOCALSocket verwendet. siehe hier . Und führende NUL wird verwendet, um darauf hinzuweisen, dass die Adresse abstrakt ist. Von Mann 7 Unix :
Eine abstrakte Socket-Adresse zeichnet sich dadurch aus, dass sun_path [0] ein Null-Byte ('\ 0') ist.
Und dies ist der einzige Grund, warum das erste Element ist \0.