#ifndef __GNUC__ me sufocar
Esta questão pode ser totalmente estranha, atualmente estou trabalhando em algum código antigo (não meu). Na verdade, não sou um programador C, mas estou tentando entender o que essa parte do código realmente deve fazer. Felizmente, a parte estranha não é muito longa (parte de uma configuração):
int
main ()
{
#ifndef __GNUC__
choke me
#endif
;
return 0;
}
Se não é um compilador GNU, então "choke me"... o que isso choke mequer dizer ... Eu realmente não entendo. (e encontrei apenas coisas estranhas enquanto me engasgava no Google -.-)
Respostas
É apenas suposto ser algo que não é válido em C e irá disparar um erro de sintaxe, impedindo a compilação do arquivo.
Presumivelmente, o programador não pretendia que o código funcionasse com qualquer compilador, exceto GNU C (gcc), então isso forçará a construção a falhar se qualquer outro compilador for usado. Não há nenhum significado especial para as palavras escolhidas, exceto que "me sufoque" provavelmente significava no sentido de "isso é algo que o compilador não pode 'engolir' e que o matará."
A abordagem mais moderna seria usar #error.
É uma declaração inválida, então resultaria em um erro.