From: Murat Koc (murat.koc@frontsite.com.tr)
Date: Wed 03 Mar 2004 - 01:41:06 EST
> SLmLar Bulent,
>
Merhaba Bora ve liste sakinleri,
> Yukarıdaki ifade tam olarak ne işe yarıyor yani "(int)0"dan farkını anlayamadım(Sonuçta ikincisi de
> herhangi bir ASM kodu üretmiyor. Tabii warning'leri kapatıyor olabilir, bilemiycem) ama eğer
> açılımını öğrenmek istiyorsan şöyle bir şey:
>
> printk("Den\n") == ((0), (int)0)
> printk("Den = %d\n", 25) == ((0, 25) (int)0)
>
> gcc'ye -E switch'ini verirsen dosyanın derlenmeden önceki preprocess edilmiş halini alabilirsin...
>
Bir önceki mailimde neden olduğunu yazmıştım. Yukarıdaki iki şekil de
olayın yine de anlaşılmamasını sağlayacaktır. Çünkü bir fark
göremeyeceksiniz.
GCC nin nerede ise bütün özellikleri ile kullanıldığı alan biliyorsunuz
KERNEL. Dolayısı ile bu tür bazı yazım tarzları için kernel programlama
ile ilgilenmiş olmak gerekiyor. Bundan dolayı user space programlarda
karşılaşmayacağınız (aslında çok sık karşılaşmayacğınız demek lazım
sanırım) bu tür ifadelerin anlaşılması problem olabilir.
Bütün olay printk nın bir takım sınıflandırılmalar yapılmasına izin
vermesi ve bunun için driverlar içinde DEBUG macrolarının tanımlanması.
Bizim yaptığımız ise bu macrolardaki ifadeler ile uyum sağlamak ve olası
problemleri önceden halletmemizi sağlamak.
> BS> belki anliyabilirim diye heveslendim ve soyle birsey yaptim
>
> BS> #define printk (format, args...) ((0,##args), printf(format,args))
> BS> #define printk2(format, args...) printf(format,args)
>
> Yukarıdakiler hatalı. Şöyle olmalı:
>
> #define printk (format, args...) ((0 , ##args), printf(format , ##args))
> #define printk2(format, args...) printf(format , ##args)
>
Böyle dahi olsa yine hatalı :) ve birşey anlaşılmaz. Bakın burada
tanımlamaları yaparken printk için printf yapıyorsunuz. Oysaki bizim
tanımlamamız printk için geçerli. Çünkü bir takım değerler atamamıza
printk izin veriyor printf değil.
Dolayısı ile bu tanımlamalar ile bir yere varılamaz.
Umarım biraz daha açıklayıcı olabilmişimdir.
-- __________ | | | | Murat Koc | | Manager & IT Consultant | FRONT | |==========| FrontSITE Bilgi Teknolojisi A.S. |_____SITE_| http://www.frontsite.com.tr/ -- Attached file included as plaintext by Ecartis -- -- File: signature.asc -- Desc: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBARX4CyHJSQxPy7GoRAiD4AJ9mbwjj+cez5cgS6gIfE9cwDMi8DgCgxK5U vkn4o9S9ksvHrvRQ+WryBJs= =eG4O -----END PGP SIGNATURE-----