Aşağıdaki iki kod snippet'ının hangisi doğru/tercih edilen ve neden derleyici yönergeleri kullanılırken bana açık değildir. Görünen çoğu geliştiricinin ve Açık Kaynak projesinin ilkini kullandıkları görülüyor, ancak ikinci sık kullanılanları da gördüm. Yukarıdaki kod pasajlarının kodu yalnızca hata ayıklama sırasında ve neden çalıştırmak için tercih edilir#ifdef DEBUG versus #FDBUG
#if DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
KARŞI
#ifdef DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
? Tahminim, DEBUG, DOĞRU tanımlandığında ve DOĞRU olarak ayarlandığında, ikinciin çalışacağı DOĞRU veya YANLIŞ olarak tanımlanırsa, ilk çalıştırılacak olmasıdır. Bu doğru mu?
'# ifdef' yalnızca sembolün tanımlandığını sınar.'# 'sembolün VALUE değerini test eder. FOO 0 ', #ifdef FOO'yu true yapacak, ancak #if FOO'yu yanlış yapacak, çünkü #if 0'ı yapıyor. –
"Kök" tanımını bulmaya çalışmalı ve değerin 1/0 değeri mi yoksa varolan/yok olan mı olduğunu belirlemek için girişimde bulunmalısınız. Onları yanlış anlayarak "beklenmedik" sonuçlar doğurabilir. –