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
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!
je poste quand meme le message qui fera sourire quelque un surement!
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ ./B | ./A
Si ça te chante, tu peux aussi facilement stocker ta structure de données dans le fichier nommé « fichier » :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ ./B > fichier
À bientôt.
Le Farfadet Spatial
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager