(void)argument; - co to robi?

(void)argument; - co to robi?
DZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Podaj nazwę miejscowości
0

Witam,

W Keilu w każdej (?) funkcji w ichnich szablonach jest na początku deklaracja/wywołanie/??? wskaźników z parametrów. O takie coś:

Kopiuj
__WEAK __NO_RETURN void osRtxIdleThread (void *argument) {
  (void)argument;

  for (;;) {}
}

czy tu:

Kopiuj
// OS Error Callback function
__WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) {
  (void)object_id;
...

Czy ktoś wie za co odpowiada (void)argument bądź (void)object_id; w drugiej funkcji?
Wspomniane fragmenty są w całości dostępne tu: RTX_Config.c

Nie widzę żadnego wpływu tego kodu na cokolwiek; kompilator (v5 i v6) to olewa. To też oczywiście oznacza że wartość przekazana przez taki wskaźnik nie ma tu znaczenia.

Nic w sieci nie znalazłem; albo nie potrafię szukać albo wpisuje złe hasła. W każdym razie skończyły mi się pomysły.

katakrowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Chorzów
  • Postów: 1670
0

Być może chodzi o przekazanie "paretnta" wywołującego funkcję. W przypadku gdy go nie ma funkcja zadziała tak samo jak w przypadku gdy jest ale np. w przypadku wyjątku lub błędu zachowanie już jest inne?
Kiedyś pisało się tak, że prawie zawsze przekazywało się obiekt wywołujący:

Kopiuj
int a = osRtxErrorNotify (255, this );
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
DZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Podaj nazwę miejscowości
0

https://stackoverflow.com/questions/34288844/what-does-casting-to-void-really-do#34289000

Dokładnie. Po wywaleniu faktycznie kompilator (v6) informuje że argument nie jest używany. Na to nie wpadłem.

Dzięki!

several
  • Rejestracja: dni
  • Ostatnio: dni
0

Przydaje się to czasem przy debugowaniu gdy zrzucasz sobie jawnie jakieś dane tylko żeby podejrzeć stan, ale nigdzie tych zmiennych nie używasz. Raz, że takie zmienne VisualStudio czasem potrafi wywalić mimo trybu debug a dwa, że niektóre systemy mają ustawione flagi by traktować ostrzeżenia jako błędy i wtedy blokuje to kompilacje.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0
lion137 napisał(a):

@dziobu: Czytałeś to:

https://stackoverflow.com/questions/34288844/what-does-casting-to-void-really-do#34289000
?

Żeby intencja była jasna niektórzy opakowują to makrem np Q_UNUSED, ale spokojnie to samo można osiągnąć za pomocą prostego szablonu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.