27 votes

activer RTTI en c ++

Quelqu'un peut-il me dire comment activer RTTI en c ++ lorsque l'on travaille sur unix. J'ai entendu dire qu'il peut être désactivé et activé. sur mon environnement unix, comment puis-je vérifier si RTTI est activé ou désactivé?

J'utilise le compilateur aCC sur HPUX.

20voto

Eddy Pronk Points 3084

gcc l'a activé par défaut. Vérifiez si typeid (foo) .name () vous donne quelque chose d'utile.

 #include <iostream>
#include <typeinfo>

int main()
{
 std::cout << typeid(int).name() << std::endl;
 return 0;
}
 

Sans RTTI, vous obtenez quelque chose comme:

 foo.cpp:6: error: cannot use typeid with -fno-rtti
 

20voto

vladr Points 34562

Êtes-vous à l'aide de g++ ou de quelque autre compilateur?

En g++ RTTI est activé par défaut IIRC, et vous pouvez le désactiver avec -fno-rtti. Pour tester si il est actif ou pas utiliser dynamic_cast ou typeid

Mise à JOUR

Je crois que HPUX de l' aCC/aC++ a également RTTI par défaut, et je ne suis pas au courant d'un moyen de le désactiver. Vérifiez votre man pages.

7voto

MSalters Points 74024

Selon les documents, il n'y a pas d'option pour le désactiver. Les deux seuls bits de C ++ standard qui peuvent être désactivés de manière sélective sont "l'étendue des variables dans les boucles" ( -Wc,ansi_for_scope,off ) et la recherche dépendante de l'argument des noms ( -Wc,-koenig_lookup,off ). Il n'y a pas d'option similaire à -Wc,-RTTI,off

6voto

Artyom Points 17387

Tous les compilateurs C ++ modernes que je connais (GCC, Intel, MSVC, SunStudio, aCC) ont RTTI activé par défaut, donc à moins que vous ne soupçonniez qu'il peut être désactivé pour une raison quelconque, vous pouvez supposer en toute sécurité que RTTI est activé.

2voto

Michael Burr Points 181287

RTTI est activé ou désactivé lors de la compilation de votre programme via les options du compilateur - ce n'est pas quelque chose activé ou désactivé dans l'environnement Unix à l'échelle mondiale. La meilleure façon de voir si c'est activé par défaut pour votre compilateur est de simplement essayer de compiler un code en utilisant RTTI.

Options pour activer/désactiver le RTTI sera compilateur spécifique - ce que le compilateur que vous utilisez?

RTTI est par défaut de GCC, l'option -fno-rtti désactive le support (dans le cas où vous êtes en utilisant GCC et peut-être quelqu'un éteint RTTI dans un makefile ou quelque chose).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X