Que fait (void) ‘nom de la variable’ au début d’une fonction C?

Je lis cet exemple de code de FUSE:

http://fuse.sourceforge.net/helloworld.html

Et j’ai du mal à comprendre ce que fait l’extrait de code suivant:

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; 

Plus précisément, la chose “vide” (nom de variable). Je n’ai jamais vu ce genre de construction dans un programme C auparavant, donc je ne sais même pas quoi mettre dans le champ de recherche Google. Ma meilleure hypothèse actuelle est que c’est une sorte de spécificateur pour les parameters de fonction non utilisés? Si quelqu’un sait ce que c’est et pourrait m’aider, ce serait génial. Merci!

    Cela fonctionne autour de certains avertissements du compilateur. Certains compilateurs avertiront si vous n’utilisez pas de paramètre de fonction. Dans un tel cas, vous pourriez avoir délibérément ne pas utiliser ce paramètre, ne pas être en mesure de modifier l’interface pour une raison quelconque, mais vous souhaitez tout de même arrêter l’avertissement. Cette construction de casting (void) est un no-op qui fait disparaître l’avertissement. Voici un exemple simple utilisant clang:

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

    Construisez à l’aide de l’ -Wunused-parameter et presto:

     $ 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. 

    Il ne fait rien, en termes de code.

    C’est ici pour dire au compilateur que ces variables (dans ce cas, les parameters) sont inutilisées, pour empêcher les avertissements -Wunused .

    Une autre façon de faire est d’utiliser:

     #pragma unused