bonjour,
et t il possible de passer une strcture en arguemnt a un programe B.
bien sur ce programme B serai appeler par un autre programme A qui lui passerai la dit structure.
je ne voudrai pas passer mon programme B en dll.
merci
Version imprimable
bonjour,
et t il possible de passer une strcture en arguemnt a un programe B.
bien sur ce programme B serai appeler par un autre programme A qui lui passerai la dit structure.
je ne voudrai pas passer mon programme B en dll.
merci
Non, ce que tu veux faire n'est pas possible directement.
Quelques pistes toutefois pour le faire:
1/ L'appelant A créé un fichier temporaire et dump la structure dedans. Il appelle le programme B en lui passant le nom du fichier à traiter. Le programme appellé B ouvre le fichier, recréé la structure. Le programme appelé B est responsable de l'affacement du fichier temporaire.
2/ L'appelant créé une mémoire partagée et écrit sa structure dedans. Il appelle le programme B qui mappe la mémoire partagée dans son espace mémoire et peut alors utiliser cette structure.
A mon avis, je prendrai la solution 1 car cela me semble la plus simple à réaliser.
Moi je dirais qu'il faut la placer par référence==>
struct gateau
{
int quantite_chocolat;
int quantite_farine;
int quantite_oeuf;
}
bool elaboration(gateau const&gateau_chocolat) const;
oula, je viens de lire la premiere reponse==>j'ai mal lu la question donc!:king:
je poste quand meme le message qui fera sourire quelque un surement! :yaisse2:
Sinon tu peux envoyer les valeurs de ta structure via l'argument du main si ta structure n'est pas trop complexe ;)
Salut à tous !
Sinon, si tu développes sur un système d'exploitation compatible Unix, tu peux utiliser toutes la puissance du paradigme de ce système d'exploitation, grâce au principe de flux. Concrètement, voici un premier exemple simple :
Tu as la structure Toto suivante :
Ton programme B place la structure linéarisée dans le flux de sortie standard :Code:
1
2
3
4
5 struct Toto { int tata; int tutu; };
Au niveau de la ligne de commande, tu branches le flux de sortie du programme B vers le flux d'entrée du programme A ($ est l'invite de commande) :Code:
1
2
3
4
5
6
7
8 Toto toto; /* Des manipulations sur toto. */ std::cout << toto.tata << ' ' << toto.tutu << std::endl;
Le programme A attend dans ses arguments la structure linéarisée et la recompose :Code:
1
2 $ ./B | ./A
Si ça te chante, tu peux aussi facilement stocker ta structure de données dans le fichier nommé « fichier » :Code:
1
2
3
4 Toto toto; toto.tata = std::atoi(argv[1]); toto.tutu = std::atoi(argv[2]);
Bien sûr, il faut un peu faire attention à la linéarisation de ta structure de données. Cela dit, ce n'est qu'un petit aperçu de la puissance du paradigme Unix, je t'encourage à en user et en abuser.Code:
1
2 $ ./B > fichier
À bientôt.
Le Farfadet Spatial