Bonjour,
J'ai besoin d'écrire des fonctions de callback, et comme il y en a beaucoup, pour plus de clarté, j'aimerais les écrire dans un fichier séparé.
Mais ce sont des fonctions "static".
Comment faire ?
merci
Bonjour,
J'ai besoin d'écrire des fonctions de callback, et comme il y en a beaucoup, pour plus de clarté, j'aimerais les écrire dans un fichier séparé.
Mais ce sont des fonctions "static".
Comment faire ?
merci
Pour quelle raison elles sont "static"
En général, en C, quand on rend une fonction static, c'est pour la rendre non visible d'un autre module C
que ces fonctions soient des callback ne devrait avoir aucun impact sur leur visibilité static ou non
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Elles sont statiques car on veut avoir des fonctions de même nom dans des fichiers sources différents. Mais je n'ai rien compris à la question, si une fonction fait référence à une fonction callback (statique), les deux doivent simplement se trouver dans le même fichier source ...
On peut aussi imaginer une autre solution :
tu mets tes fonctions de callback dans un module à part et tu les rends statiques.
Dans ce même module, tu ajoutes une fonction non statique qui te retourne un tableau de pointeurs de fonction sur tes fonction callback. Cela suppose que tes fonctions callback on toute le même prototype.
Dans le cas contraire (pas le même prototype), tu retournes une structure de pointeurs de fonction.
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Elles sont statics car elles ne sont utilisées nulle part ailleurs. Et je voulais separer les fichiers pour plus de clarté car il y en a beaucoup.
Comme le but était de de simplifier la chose, malheueresement cette solution est un peu compliquée
Sinon je peux peut etre ecrire les fonctions en question dans un .h et l'inclure seulement là ou je m'en sert ?
mais c'est peut etre pas conseillé de faire comme ca ?
Définir quelquechose dans un .h, c'est mal
On définit dans un .c et on déclare dans le .h (si besoin est)
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
En reprenant l'idée de Ram :
interface.h
interface.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct { void (*fonction_1)(); void (*fonction_2)(); void (*fonction_3)(); } stInterface; void InitialiserInterface(stInterface*pItf_);
Exemple d'utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include "interface.h" static void ma_fonction_1(); static void ma_fonction_2(); static void ma_fonction_3(); void InitialiserInterface(stInterface*pItf_) { pItf_->fonction_1 = ma_fonction_1; pItf_->fonction_2 = ma_fonction_2; pItf_->fonction_3 = ma_fonction_3; } static void ma_fonction_1() { /* traitement */ } static void ma_fonction_2() { /* traitement */ } static void ma_fonction_3() { /* traitement */ }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int main(){ stInterface mon_interface; InitialiserInterface(&mon_interface); mon_interface.fonction_1(); mon_interface.fonction_2(); mon_interface.fonction_3(); return 0; }
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager