#ifndef __GNUC__ mi soffoca

Sep 04 2020

Questa domanda potrebbe essere totalmente strana, attualmente sto lavorando su un vecchio codice (non da me). In realtà non sono un programmatore C, ma sto cercando di capire cosa dovrebbe effettivamente fare questa parte del codice. Fortunatamente la parte strana non è troppo lunga (parte di una configurazione):

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

  ;
  return 0;
}

Se non è un compilatore GNU allora "choke me"... cosa choke medovrebbe significare ... davvero non lo capisco. (e ho trovato solo cose strane mentre cercavo su Google soffocarmi -.-)

Risposte

3 NateEldredge Sep 04 2020 at 09:36

Dovrebbe essere solo qualcosa che non è C valido e attiverà un errore di sintassi, impedendo la compilazione del file.

Presumibilmente il programmatore non intendeva che il codice funzionasse con nessun compilatore eccetto GNU C (gcc), quindi questo costringerà la compilazione a fallire se viene utilizzato un altro compilatore. Non c'è alcun significato speciale per le parole scelte, tranne che "soffocami" era probabilmente inteso nel senso di "questo è qualcosa che il compilatore non può 'ingoiare' e che lo ucciderà."

L'approccio più moderno sarebbe quello di utilizzare #error.

2 Someprogrammerdude Sep 04 2020 at 09:36

È un'affermazione non valida, quindi comporterebbe un errore.