#ifndef __GNUC__ beni boğdu

Sep 04 2020

Bu soru tamamen garip olabilir, şu anda bazı eski kodlar üzerinde çalışıyorum (benden değil). Aslında C programcısı değilim, ancak kodun bu kısmının gerçekte ne yapması gerektiğini anlamaya çalışıyorum. Neyse ki garip kısım uzun değil (bir konfigürasyonun parçası):

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

  ;
  return 0;
}

Bir GNU derleyicisi değilse, o zaman "choke me"... bunun ne choke meanlama geldiği ... Gerçekten anlamıyorum. (ve googling beni boğarken sadece garip şeyler buldum -.-)

Yanıtlar

3 NateEldredge Sep 04 2020 at 09:36

Sadece geçerli C olmayan ve bir sözdizimi hatasını tetikleyerek dosyanın derlenmesini engelleyen bir şey olması gerekiyor.

Muhtemelen programcı, kodun GNU C (gcc) dışında herhangi bir derleyici ile çalışmasını istemedi, bu nedenle bu, başka bir derleyici kullanılırsa yapının başarısız olmasına neden olacaktır. Seçilen kelimelerin özel bir önemi yoktur, ancak "boğul beni" muhtemelen "bu derleyicinin 'yutamayacağı' ve onu öldürecek bir şeydir" anlamında kastedilmiştir.

Daha modern yaklaşım kullanmak olacaktır #error.

2 Someprogrammerdude Sep 04 2020 at 09:36

Bu geçersiz bir ifadedir, bu nedenle bir hataya neden olur.