Erreur Invalide l'utilisation de void expression

J'ai une fonction int rt_task_start (RT_TASK *task, void(*task_func)(void *arg), void *arg)
où en deuxième argument, je suis de passage d'une fonction avec l'argument.

  1. Lorsque je passe un nom de fonction à l'époque, il n'y a pas de problème.(comme prévu ça fonctionne). rt_task_start(&demo_task1, demo, 1);
  2. Mais quand je passe la rt_task_start(&demo_task1, demo(&val), 1); il me fait erreur error: invalid use of void expression. Val Variable est définie avant. int val = 0;
  3. Quand je l'appelle avec ce rt_task_start(&demo_task1, demo(val), 1); cela montre l'erreur Warning passing argument 1 of 'demo' makes pointer from integer without a cast puis error: invalid use of void expression.
  4. int *val;
    *val = 0;

    rt_task_start(&demo_task1, demo(&val), 1); c'est aussi de me donner l'erreur.

Je ne peux pas comprendre ce que je devrais passer, comme un vide pointeur. Il me fait erreur. Aucune Idée S'Il Vous Plaît!

Qu'est-ce que votre intention avec cette fonction? Voulez-vous le second argument un pointeur de fonction, ou un type de données différent? Il ne peut pas être les deux en même temps. Aussi, int *val; *val = 0; va probablement créer une erreur de segmentation puisque vous êtes l'affectation d'une valeur à un indéfini emplacement de l'adresse.
merci de m'indiquer, je veux deuxième fonction seulement un pointeur de fonction. En fait, j'étais confus au sujet de la deuxième argument void(*task_func)(void *arg) ce type de paramètres qu'il peut prendre. Je l'ai bien que je peux envoyer l'argument trop, pour le cas 2, 3 et 4 qui sont incorrectes.

OriginalL'auteur Arun Gupta | 2014-03-29