Vos prototypes doivent correspondre à vos fonctions réelles. Bien à vous ne le font pas:
int doct(int*);
private int doct (int *a)
Modifiez le prototype à:
private int doct(int*);
ou modifier la fonction:
int doct (int *a)
Vous devez également garder à l'esprit que private
ne fait pas partie de la Langage C, mais les gens l'utilisent souvent pour remplacer statique. Cela peut être rendu possible par la ligne:
#define private static
à la seule condition étant que ce macro doit être actif chaque fois que vous utilisez le nom private
. Si cela ne fonctionne pas sur votre prototype, c'est probablement parce que ce n'est pas défini à ce moment-là. Mon conseil serait d'abandonner complètement private
et d'utiliser statique (si en effet c'est ainsi que private
est défini). Les gens devraient apprendre la langue, pas adopter des béquilles inutiles (à mon avis).
Autres favoris que je méprise aussi:
#define global extern
#define begin {
#define end }
Le private
et global
sont utilisés pour signifier locale à ce fichier et global à tous les fichiers respectivement.Le begin
et end
sont particulièrement désagréables abominations de personnes qui devraient retourner à Pascal où ils appartiennent :-)
En plus de ce problème, votre ligne:
static int a = 0;
sera effectivement cacher le paramètre vous passez dans la fonction (car il a le même nom) et:
*a = a;
provoque une erreur (car il a un type différent). C'est rarement une bonne idée de le faire. Renommez l'un d'entre eux.
Peut-être poster un code source aider? – Extrakun
Où sont les sources? Je ne peux pas en dire beaucoup à ce sujet. –
Suggestion: Publiez du code pour savoir à quoi les erreurs font référence. Ce n'est pas différent de nous demander "le résultat est 12, quelle est l'équation?" – GManNickG