Avec gnu89:Comment implémenter et partager une fonction inline en utilisant C99?
/* share.h */
extern inline void f (void);
/* function.c */
void f (void) {}
/* main.c */
#include "share.h"
int main (int argc, char **argv) {
f();
return 0;
}
C99:
/* share.h */
static inline void f (void) {}
/* main.c */
#include "share.h"
int main (int argc, char **argv) {
f();
return 0;
}
Comment mettre en œuvre une définition de f()
dans function.c
comme dans gnu89 mais en utilisant le mode C99?
Désolé si je n'étais pas clair, je veux que la définition de la fonction d'être dans le fichier source pour maintenir la logique dans un seul fichier, si les fonctions doivent être inline ou non. – lxndr
Je ne pense pas que ce soit possible. Pour rendre l'inlining possible, une unité de traduction doit connaître la définition de la fonction, elle doit donc figurer dans le fichier d'en-tête. Peut-être que vous pourriez le faire en utilisant une inclusion conditionnelle bizarre, je vais essayer de l'ajouter à ma réponse. – schot
Eh bien, il pourrait être plus facile à lire pour écrire la définition directement dans le fichier d'en-tête alors. Est-ce que cela signifie que extern inline n'a aucun sens dans C99? – lxndr