2013-04-16 17 views
8

Pugixml kaynak kodunu okuduğumda görüyorum ve gerçekten neden orada olduğunu bilmiyorum."(void)! Ptr" nedir?

void foo(void* ptr) { 
    (void)!ptr; // What does this line do? 
} 
+0

Parametreyi adsız bıraktığınız için yeni bir değiştirmeye benziyor. – chris

+2

Genellikle, kullanılmayan parametrelerden şikayetçi olan derleyicileri ve diğer araçları gereksiz bir işlem uygulayarak durdurur. –

+0

İlgili: [C++ 'da kullanılmayan parametre] (http://stackoverflow.com/questions/15763937/unused-parameter-in-c11) – hammar

cevap

10

(void)ptr; işlev imzası (örneğin bir geri aramasında, 'kullanıcı verilerinin' IF_FUNCTION kullanımları daha fazla parametre içermesi gerektiği zaman gerekli olabilir "kullanılmamış parametresi" uyarıları bastırmak için ortak bir yoldur parametre kullanılmaz).

! benim için yeni, çünkü bu bağlamda gereksiz çünkü geri dönüş değeri atılmış.

+0

'' '' 'Muhtemelen bir operasyonu zorlar, bu nedenle kullanımı basitçe kaldıramaz. –

+4

Bana göre gereksiz paranoyaya benziyor. Geçersiz olan oyuncu, "görünüş" parametresini yapmak için oradadır ve bildiğim her derleyici bunu anlar ve kullanılmayan parametre uyarısını yayar. – nneonneo

+0

'!' Ayrıca bir "bool" döndürür. Bir "tamsayı olmayan işaretçiyi işaretleyemez" uyarısını veya benzer bir şeyi önleyebilir. Şahsen, "void" e alıştırma yapabileceğinize şaşırdım. –

İlgili konular