Bonjours la communauté.
Merci a tous ceux qui lise
et surtout ceux qui participe à ses forums utiles en tous points.
Enfin passons le lustrage des politesses, rentrons dans le vif du sujet.
2 points, un déjà résolus mais demande débat.
J'ai deux structure Log et LogChild suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| typedef struct {
Buffer *methode_name;
Buffer *class_name;
Buffer *info;
Log *parent;
void (*write)();
} LogChild;
typedef struct {
conf_params *params;
LogChild* (*child)();
} Log; |
dans ma structure Log, j'ai un pointeur de function
qui renvoie un pointeur de LogChild (ici pour initialiser/construire un LogChild selon Log lui même)
Un logChild lui meme contient un pointeur de Log dit la "parent".
Ces deux functions je n'arrive a les faire cohabiter dans le même fichier header.
raison simple soit LogChild est en premiere structure et le compilateur
ne peu comprendre
soit Log est en première structure et le compilateur ne peu comprendre
Oui Le serpent mange sa queue. qu'est ce que l'on aime se genre de situation en programmation je crois que l'on fait exprès de les recherchés.
GNU GNU....
Pensez vous possible une solution avec un ligne tels que :
extern Log ou extern LogChild, pour les faire cohabiter dans le même header?
sinon la pseudo solution chacune des structures a son fichier header ensuite plus de soucis mais... j'appelle cela une solution incomplète.
La deuxième la plus utile dans mon avancé.
prototype de la function :
void darkdns_kernel_logger_write(LogChild *myLogChild,char *methode,char *info)
En gros pour moi cette function est une methode,
initialiser par :
1 2 3 4 5 6 7 8 9 10
| LogChild* darkdns_kernel_logger_child(Log *myLog,char *className)
{
LogChild* newChild =darkdns_kernel_memory_alloc(sizeof(LogChild));
Buffer* bufClassName=darkdns_kernel_memory_alloc(sizeof(Buffer));
newChild->parent=myLog;
newChild->class_name=bufClassName;
newChild->class_name->from_one(newChild->class_name,className,"\0",0);
newChild->write=darkdns_kernel_logger_write;
return newChild;
} |
penser vous pour le pointer de function :
newChild->write=darkdns_kernel_logger_write;
serait-il possible de lui renvoyer un pointer de function avec le premier parametre en lien.
exemple :
newChild->write=LogChild* (*child)()darkdns_kernel_logger_write(newChild);
Quelque chose dans le genre.
je sais avoir des lacunes dans le système des macros.
et peu être bien d'autre choses.
si certain avais quelque lumière je suis preneur.
Merci.
Partager