2011-09-08 5 views
40

Ben FUSE Bu örnek kodu okuyorum Özellikle(void) 'değişken adı' bir C işlevinin başlangıcında ne yapar?</p> <p><a href="http://fuse.sourceforge.net/helloworld.html">http://fuse.sourceforge.net/helloworld.html</a></p> <p>Ve aşağıdaki kod parçacığını ne anlama sorun yaşıyorum:

static int hello_readdir(const char *path, void *buf, fuse_fill_dir_t filler, 
         off_t offset, struct fuse_file_info *fi) 
{ 
    (void) offset; 
    (void) fi; 

, (boşluk) "değişken adını " şey. Bu tür bir kurumu daha önce bir C programında görmedim, bu yüzden Google arama kutusuna neyin girileceğini bile bilmiyorum. Şu anki en iyi tahminim, kullanılmayan işlev parametreleri için bir çeşit belirticidir. Bunun ne olduğunu bilen ve bana yardım edebilecek biri varsa, bu harika olurdu. Teşekkürler!

+1

derlemek mu:

Bunu yapmanın bir başka yolu kullanmaktır? Sigorta kodu okurken –

+0

buraya geldim: D –

cevap

76

Bazı derleyici uyarıları etrafında çalışır. Bir işlev parametresi kullanmazsanız bazı derleyiciler uyarır. Böyle bir durumda, bu parametreyi kasıtlı olarak kullanmamış olabilirsiniz, bir nedenle arabirimi değiştiremezsiniz, ancak yine de uyarıyı kapatmak isteyebilirsiniz. (void) döküm konstrüksiyonu, uyarıyı ortadan kaldıran bir no-op'tur. -Wunused-parameter bayrak ve saygınlık kullanarak

int f1(int a, int b) 
{ 
    (void)b; 
    return a; 
} 

int f2(int a, int b) 
{ 
    return a; 
} 

Yapı:

$ clang -Wunused-parameter -c -o example.o example.c 
example.c:7:19: warning: unused parameter 'b' [-Wunused-parameter] 
int f2(int a, int b) 
       ^
1 warning generated. 
+1

1 örneğin:) – Macmade

+0

o '#define IGNORE_UNUSED (var) (void) (var)' sonra kullanmak daha anlamsal olmaz mı? – orlp

+0

@nightcracker, ne "daha anlamsal" demek bilmiyorum, ama OP'ın kullanım oldukça yaygın bir deyim olduğunu. –

5

Bu hiçbir şey yapmaz kod açısından İşte basit bir örnek kullanarak çınlama var.

O -Wunused uyarıları önlemek için, (bu durumda parametrelerinde) bu değişkenlerin kullanılmayan derleyici anlatmak için burada.

#pragma unused 
İlgili konular