#ifndef __GNUC__ mencekik saya

Sep 04 2020

Pertanyaan ini mungkin sangat aneh, saya sedang mengerjakan beberapa kode lama (bukan dari saya). Saya sebenarnya bukan pemrogram C, tetapi saya mencoba memahami apa yang seharusnya dilakukan bagian kode ini. Untungnya bagian yang aneh tidak terlalu panjang (bagian dari konfigurasi):

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

  ;
  return 0;
}

Jika ini bukan kompiler GNU maka "choke me"... apa choke memaksudnya ini ... Saya benar-benar tidak mengerti. (dan hanya menemukan hal-hal aneh saat googling mencekik saya -.-)

Jawaban

3 NateEldredge Sep 04 2020 at 09:36

Ini seharusnya menjadi sesuatu yang tidak valid C dan akan memicu kesalahan sintaks, mencegah file untuk dikompilasi.

Agaknya programmer tidak bermaksud agar kode tersebut bekerja dengan kompiler apa pun kecuali GNU C (gcc), jadi ini akan memaksa build untuk gagal jika kompiler lain digunakan. Tidak ada arti khusus untuk kata-kata yang dipilih, kecuali bahwa "choke me" mungkin berarti "ini adalah sesuatu yang tidak dapat 'ditelan' oleh kompiler dan akan membunuhnya."

Pendekatan yang lebih modern akan digunakan #error.

2 Someprogrammerdude Sep 04 2020 at 09:36

Ini adalah pernyataan yang tidak valid, jadi akan menghasilkan kesalahan.