62 votes

Quand la compilation de c ++ sans RTTI peut-elle causer des problèmes?

J'utilise l'indicateur -fno-rtti gcc pour compiler mon C ++ sans informations sur le type d'exécution.

En supposant que je n'utilise pas dynamic_cast<> ou typeid() , y a-t-il quelque chose qui pourrait me conduire à des problèmes ultérieurs?

45voto

Bowie Owens Points 1426

Étant donné que votre question est spécifique à GCC, vous devriez consulter attentivement la documentation de la version que vous utilisez. La documentation de GCC 4.5.2 dit ce qui suit. Qui de ma lecture semble indiquer que si vous évitez de le dynamic_cast et typeid, vous devriez être ok. Cela dit, je n'ai pas d'expérience personnelle avec -fno-rtti. Vous pourrez peut-être expliquer pourquoi vous êtes aide -fno-rtti.

-fno-rtti Désactiver la génération de l'information au sujet de chaque classe avec fonctions virtuelles pour une utilisation par le C++ runtime type d'identification caractéristiques (dynamic_cast' andtypeid'). Si vous ne pas utiliser les parties de la langue, vous pouvez économiser de l'espace par l'utilisation de ce le drapeau. Notez que la gestion des exceptions utilise les mêmes informations, mais il générer en tant que de besoin. L' `dynamic_cast' opérateur peut encore être utilisés pour la contention qui ne nécessitent pas de runtime type d'information, à savoir jette à void * ou à sans ambiguïté de la base de des classes.

6voto

Steve Points 21

Nous utilisons gcc sans rtti depuis 5 ans sans problèmes spécifiques (sans utiliser dynamic_cast ou typeid)

-3voto

Abhinav Points 605

comme Bowie a cité la documentation pertinente,
ce qui peut être interprété car il n'y aura pas de fonctions virtuelles afin que vous n'obteniez pas l'avantage de C ++.
Donc, c'est plus que dynamic_cast. Vous perdez tout le comportement cool de C ++ en arrière-plan.

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