dongu

C, C++ ve C++ Builder ile ilgili konuları buraya yazabilirsiniz.
Cevapla
selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

dongu

Mesaj gönderen selm@n »

Kod: Tümünü seç

#define WaitForActivity(a) ( (*a)=(*a), 0)

bu satir tam olarak ne yapiyor?
bunun kullanildigi yer de asagida..

while(1)
{
WaitForActivity(&activity);
}

activity bir integerdır ...
bu kodu bir türlü ne iş yaptığını anlamadım yardımcı olursanız sevinirim şimdiden teşekkürler.
;)
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Mesaj gönderen warder »

define prensiplerine göre değerlendirdiniz mi?
yani
WaitForActivity(&activity);
satırı yerine
WaitForActivity(( (*a)=(*a), 0));
satırını kullandınız mı?
zaten kullanamazsınız saçma bir satır olduğundan derleyici red edecektir.

tabii bu arada WaitForActivity(*) fonksiyonunun içeriğini de bilmek gerekiyor. Aldığı parametreleri de.
makroda tek görülen doğru kullanılmadığı.
Bu haliyle sanki define makrosunun yanlış kullanımına verilmiş bir örnekten alıntıya benziyor gibi.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Verdiğiniz koddaki makro precompiler dan geçince kod aşağıdaki şekle dönecektir.

Kod: Tümünü seç

while(1) 
{ 
    ( (activity)=(activity), 0) 
} 
Buradan da görüleceği gibi bu kod hiçbirşey yapmamaktadır. Activity değişkeni activity değişkenine atanmaktadır. Hepsi bu.. Kodun içinde bu kullanılmadığından linker pass 2 de optimizasyon yaparken bu kodu objeden atacaktır.

Kolay gelsin..
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Cevapla