type_info : comment est-elle instanciée ? - C++ - Programmation
Marsh Posté le 27-12-2003 à 00:57:40
cette implémentation est complètement dépendante de ton compilateur? si tu veux les manipuler, c'est pas const & et tu récupère ça avec l'opérateur typeid()
Marsh Posté le 27-12-2003 à 01:09:36
name et raw_name sont des méthodes standards ? et leur résultat ?
par exemple avec mon compilo :
Code :
|
et raw_name va renvoyer le nom décoré
le format de la réponse est-il standard ? les décorations ?
Marsh Posté le 27-12-2003 à 01:19:32
1) int main
2) dans une certaine mesure oui. ceci est décrit dans l'ARM. les compilateurs ont la libertés de mettre en oeuvre des techniques de compression pour des raisons d'efficacité (un symbole brut C++ peut facilement faire 4Ko, ça fait très mal, imagine ce que ça ferait de faire une faute de page à chaque fois)
Marsh Posté le 27-12-2003 à 01:22:28
normalement tu dois obtenir ceci
4Test
P4Test
l'utilitaire gnu c++filt permet de décrypter ses symboles (la convention est très simple, mais le mélange devient difficile à lire)
Marsh Posté le 27-12-2003 à 13:00:47
j'obtiens
.?AUTest@@
.PAUTest@@
avec vc++7
Marsh Posté le 01-01-2004 à 16:14:16
ben spa normal, je crois bien que la norme impose bien une base commune
Marsh Posté le 01-01-2004 à 17:08:43
ceux qui voudraient bien pourraient tester ceci et dire leur compilo + le resultat svp ?
Code :
|
merci
Marsh Posté le 01-01-2004 à 17:23:34
BlackGoddess a écrit : ceux qui voudraient bien pourraient tester ceci et dire leur compilo + le resultat svp ?
|
Code :
|
Abstraction faite de ces quelques problèmes, GCC 3.3.1 ne connais pas raw_name du tout
Marsh Posté le 01-01-2004 à 17:51:54
Resultat sous Visual 6
.?AUTest@@
.PAUTest@@
Press any key to continue
Marsh Posté le 01-01-2004 à 18:15:31
1) raw_name n'existe pas
2) la norme de codage de VC est complètement à part apparemment, ce qui explique le gros bordel que c'est de linker autre chose que du VC avec du VC.
sinon voir dans l'ARM 7.2.1c pour quelque chopse de moins fantasque et suivi par g++
t -> 4Test 4 étant la longueur du nom
&t -> P4Test le P représentant la nature pointeur
Marsh Posté le 02-01-2004 à 02:31:24
VC++ 6 et VC++ .NET:
.?AUTest@@
.PAUTest@@
(Passé un max de temps a configurer VC++ .NET pour 1) faire une appli en mode console [le wizard est pas installe par defaut] et 2) virer les options tenant absolument a linker le code avec les MFC.
A+,
Marsh Posté le 02-01-2004 à 09:26:36
oui c'est vrai que c'est lourd les MFC ... par contre le wizard c'est bizard j'ai fait 2 install par defaut (vs.net 2002) et il était installé ...
merci pour les réponses
Marsh Posté le 02-01-2004 à 09:27:39
sinon pour la compilation avec VC++ on dirait qu'il décore les noms comme il le fait pour son linker, ou comme il le fait quand on exporte des classes d'une dll par exemple ...
Marsh Posté le 02-01-2004 à 10:32:23
blackgoddess a écrit : oui c'est vrai que c'est lourd les MFC ... par contre le wizard c'est bizard j'ai fait 2 install par defaut (vs.net 2002) et il était installé ... |
Tu avais le wizard pour une appli console en VC++ .NET installé par defaut?? J'utilise VC++ .NET 2002 aussi pourtant. Installé lors de l'install de VS .NET Enterprise Architect.
Je me souviens plus de mes options d'install, alors ca peut venir de la. Mais si tu as le meme wizard que moi (installé a lal pogne donc), il genere automatiquement des fichiers stdafx.h et stdafx.cpp, sauf si a la creation du projet tu penses a changer les options et cliquer sur la check-box pour projet vide (dans une page secondaire).
A+,
Marsh Posté le 02-01-2004 à 11:02:39
oui, c'est bien le même wizard (vs.net pro)
Marsh Posté le 01-05-2004 à 10:14:41
La méthode name renvoie un resultat non standart. Ca dépend de l'implémentation du compilo, et chaque compilo est libre de choisir le nom qu'il souhaite.
Raw_name est propre à certains compilo tel que VC et n'est pas standart. Il renvoie un nom codé en RAW.
Marsh Posté le 27-12-2003 à 00:54:50
bonjour,
je me pose des questions sur la classe : type_info
c'est apparement le type de retour de l'operateur typeid
j'ai trouvé sa déclaration dans un header de mon compilo :
elle n'a pas de constructeur par defaut, et son unique constructeur est privé, pourtant l'operateur typeid doit bien l'instancier ?
sinon, est-ce possible (techniquement, je parle pas de l'interet) de surcharger cet operateur typeid ?
---------------
-( BlackGoddess )-