J'ai un comportement curieux dans un programme C. Je passe quelques arguments à une fonction avec la signature suivante dans un fichier appelé foo.c:C: Raisons pour lesquelles un paramètre passé est NULL après l'appel de la fonction à un module différent
foo (char *first, size_t a, size_t b, size_t c, char *last);
Maintenant, quand je l'appelle cette fonction à partir d'un autre fichier C qui comprend foo.h, par exemple avec:
foo("first value", 1, 2, 3, "last value");
dans foo d'abord, a, b, c sont corrects mais le dernier est toujours NULL. Peu importe le type de type que j'utilise comme dernier paramètre ni d'où j'appelle cette fonction (même directement dans le main sans opérations précédentes). Les fichiers sont compilés et liés ensemble dans un exécutable. Lorsque je mets foo() dans le même fichier source d'où il est appelé tout fonctionne.
Quelqu'un a-t-il une idée de ce qui pourrait être la raison pour laquelle, lorsque la fonction est sous-traitée, le dernier paramètre est NULL?
Quelle est la signature dans foo.h? – dsm
Montrez votre code. Pourquoi pensez-vous que la dernière est nulle? Vous semblez le passer au sens littéral. – tpdi
Avez-vous assuré que le prototype de fonction de foo.h est correct? – Noldorin