Widzę to, gdy czytam kod źródłowy pugixml i naprawdę nie wiem, dlaczego on tam jest.Co robi "(void)! Ptr"?
void foo(void* ptr) {
(void)!ptr; // What does this line do?
}
Widzę to, gdy czytam kod źródłowy pugixml i naprawdę nie wiem, dlaczego on tam jest.Co robi "(void)! Ptr"?
void foo(void* ptr) {
(void)!ptr; // What does this line do?
}
(void)ptr;
jest powszechnym sposobem aby tłumić „niewykorzystywane parametr” zasadami, które mogą być konieczne, gdy podpis funkcji muszą zawierać więcej parametrów niż zastosowań funkcyjnych (na przykład w zwrotnego, jeśli „danych użytkowych” parametr nie jest używany).
Jest dla mnie nowy, ale jest zbędny w tym kontekście, ponieważ wartość zwracana jest po prostu odrzucana.
"!!" Prawdopodobnie wymusza operację, więc nie może po prostu odrzucić użycia. –
Dla mnie wydaje się niepotrzebną paranoją. Odsunięcie do nieważności powoduje, że parametr "wydaje się" używany i każdy znany kompilator rozumie i unika emitowania nieużywanego ostrzeżenia o parametrach. – nneonneo
'!' Zwraca również wartość 'bool'. Mogłoby to uniknąć ostrzeżenia "nie można rzucić wskaźnika do niecałkowitego" lub czegoś podobnego. Osobiście jestem zaskoczony, że możesz typować na "void" w ogóle. –
Wygląda na zamiennik za pozostawienie parametru bez nazwy. – chris
Zwykle zatrzymuje kompilatory i inne narzędzia od narzekania na nieużywane parametry, stosując bezużyteczną operację. –
Powiązane: [Nieużywany parametr w C++] (http://stackoverflow.com/questions/15763937/unused-parameter-in-c11) – hammar