Je m'interrogeais sur les petites différences entre les déclarations de prototypes de fonctions dans les en-têtes et dans les fichiers .c. J'ai un en-tête avec quelques fonctions de prototypes et quelques fichiers .c avec une implémentation réelle de ces fonctions. J'ai fait quelques changements dans l'en-tête, seulement ajouté le qualificatif "__restrict" (reconnu par gcc). Ma question est que je dois mettre le qualificatif "__restrict" dans les fichiers .c à (actuellement le code compile donc je suppose que la réponse est non, mais une précision serait appréciée).C: différences entre la déclaration du prototype dans l'en-tête et la déclaration de la fonction pour la mise en œuvre?
Est-ce que cela fonctionne pour tous les qualificatifs C? Puis-je ajouter "const" ou "volatile" dans l'en-tête sans avoir à faire la même chose dans les fichiers .c?
actuellement en tête:
int myfunc_gettype (const mytype *__restrict, int *__restrict);
et dans le fichier de mise en œuvre:
int myfunc_gettype(const mytype *attr, int *type)
en fait, le mot-clé est C99 restreindre et le __restrict est attraper juste en gcc avec je suppose que le même résultat. – claf
Je ne suis pas sûr de comprendre, si j'ai le qualificatif restrict dans l'en-tête et non dans l'implémentation, le pointeur sera-t-il "restreint" de toute façon ou non? – claf
Vous appelez UB. Cela peut en fait entraîner la restriction du pointeur. Le mot clé standard C++ est 'restrict', pourquoi utiliser __restrict? – dirkgently