W kilku językach istnieje konwencja do używania identyfikatora _
dla zmiennych "do not care", które nie powinny być nigdy przywoływane. Na przykład, można napisać na schemacie/Lisp
(let* ((x ...)
(_ ...<some side effect depending on x>)
(y ...<something making use of the side effect's result>))
...)
W tym przypadku nie ma problemu z scopingu ponieważ można przeniesieniu _
tak często, jak tylko chcesz. W C/C++ ta konwencja nie jest do końca użyteczna, ponieważ wiele konfliktów powodowałoby wiele zastosowań.Nie jest konieczne do ignorowanych parametrów, ponieważ można po prostu pominąć je całkowicie:
int fun(int a, int, int b) { return a + b; }
Jednak jako jedyny substytut rozmiarze w strukturze (dla którego jest tu użyty), nie można pominąć identyfikator, a ty będziesz potrzebuje tylko jednego identyfikatora na przestrzeń nazw. Tak więc w tym przypadku ta konwencja działa. Ale jako idiomatyczny wzór, jest on używany w innych językach o wiele więcej.
To tylko nazwa zmiennej. – cup
Uwaga: C11 7.1.3 Zarezerwowane identyfikatory: "... Wszystkie identyfikatory, które zaczynają się od podkreślenia, są zawsze zarezerwowane do użycia jako identyfikatory z zakresem pliku w zwykłych i nazwanych spacjach nazw." Tutaj '_' jest nazwą pola, więc wydaje się, że nie narusza tego. – chux
Przestrzenie nazw @chux są zdefiniowane w 6.2.3. – OrangeDog