Il faut mettre le premier #define quelque part tout en haut de ta source. Par exemple dans un header que tu inclus vers le début.
Et en C++ tu peux directement renvoyer une paire d'éléments avec pair<Type1,Type2> (bcp plus propre que de renvoyer un élément et de passer l'autre par référence). C'est aussi possible en C, mais bcp moins pratique (obligé de définir une nouvelle structure) et c'est pas vraiment dans les moeurs.
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Bizarre, cette feature du C++, je n'en ai pas trop entendu parler.
geogeo> Sinon, tu peux tout simplement en C passer ton argument par adresse.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Renvoyer une structure ou classe par valeur (et le template pair en est aussi une), ce n'est pas vraiment quelque chose d'efficace...
Pkoi? Un compilo bien fait peut, s'il le souhaite :
* renvoyer la valeur dans 2 regs différents
* utiliser un passage par référence classique
(si les optimisations globales sont possibles)
Et sinon, on aura une petite pénalité liée au boxing. Perso, je trouve que ça vaut largement le surcoût de clarté (distinction claire paramètres/valeurs de retour qui n'ont pas besoin d'être initialisées). Si le compilo n'est pas doué et que c'est _la_ partie critique, alors après rien n'interdit de faire les choses gores que tu proposes. Et à vrai dire, si tu renvoies un couple de string, le mauvais compilo est obligé d'initialiser la string que tu passes par référence (s'il ne sait pas que la valeur de la chaîne ne sera pas utilisée), alors qu'il n'aura pas à le faire avec un pair<string,string> -- donc même le gain de performance n'est pas aussi clair que tu le prétends.
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
En C, il n'est pas obligé d'initialiser quoi que ce soit, vu qu'il n'y a pas de constructeurs, et que c'est le programmeur qui décide s'il initialise la structure ou non.
Désolé, mais l'abbréviation commune de "Microsoft" (ou plutôt de "Micro$oft") sur Internet est "M$" et pas "MS", donc j'ai l'habitude de mettre ce que je lis partout.
c une abréviation de gars qui se la racontent anti microsoft... ça me fait de la peine
Sur Slashdot, presque tout le monde note "M$".
Sally Le 28/01/2004 à 23:03 ben il faut utiliser une bibliothèque de terminal pour ça, sous linux ce cerait libncurses mais sous win je ne connais pas l'équivalent...

« Le bonheur, c'est une carte de bibliothèque ! » —
The gostak distims the doshes.Membrane fondatrice de la confrérie des
artistes flous.
L'univers est-il un
dodécaèdre de Poincaré ?
(``
·\ powaaaaaaaaa ! #love#
geogeo> à tout hasard, je dirai bien conio.h
(console IO.h, je suppose que ça veut dire)
mais je sais pas s'il y a ça dedans
(je n'utilise jamais conio.h... pas ANSI... et puis, de toute, quand je fais des progs sous ligne de commande, c'est généralement pour qu'ils fassent du traitement batch, sans interfacer avec l'utilisateur autrement que par leur entrée standard... sinon, interface fenêtrée, quand je veux un échange d'infos entre l'utilisateur et le programme...)
geo²> C'est normal, stdio est fait pour pouvoir être utilisé avec n'importe quel terminal (y compris une imprimante), donc même pas de clrscr()...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)