#ifndef __GNUC__ mnie dusi

Sep 04 2020

To pytanie może być całkowicie dziwne, obecnie pracuję nad starym kodem (nie ode mnie). Właściwie nie jestem programistą C, ale próbuję zrozumieć, do czego właściwie służy ta część kodu. Na szczęście dziwna część nie jest zbyt długa (część konfiguracji):

int
main ()
{
#ifndef __GNUC__
       choke me
#endif

  ;
  return 0;
}

Jeśli to nie jest kompilator GNU, to "choke me"... co to choke mema znaczyć ... Naprawdę nie rozumiem. (i znalazłem tylko dziwne rzeczy podczas googlowania mnie dusić -.-)

Odpowiedzi

3 NateEldredge Sep 04 2020 at 09:36

To powinno być po prostu coś, co nie jest poprawne w C i spowoduje błąd składni, uniemożliwiający kompilację pliku.

Prawdopodobnie programista nie chciał, aby kod działał z żadnym kompilatorem poza GNU C (gcc), więc to zmusi kompilację do niepowodzenia, jeśli zostanie użyty inny kompilator. Wybrane słowa nie mają specjalnego znaczenia, poza tym, że „dusić mnie” miało prawdopodobnie znaczenie w znaczeniu „to jest coś, czego kompilator nie może„ przełknąć ”i co go zabije”.

Bardziej nowoczesnym podejściem byłoby użycie #error.

2 Someprogrammerdude Sep 04 2020 at 09:36

To nieprawidłowa instrukcja, więc spowodowałaby błąd.