Quand peut-compilation c++ sans RTTI causer des problèmes?
Je suis à l'aide de gcc -fno-rtti
drapeau pour compiler mon C++ sans runtime type d'informations.
En supposant que je ne suis pas en utilisant dynamic_cast<>
ou typeid()
, est-il rien qui pouvait me conduire à plus tard les problèmes?
- Est-ce une question hypothétique, ou êtes-vous eu des problèmes et je me demandais si le fait d'avoir RTTI handicapés est à l'origine? Si vous rencontrez des problèmes, quels types de problèmes rencontrez-vous?
- J'aime en général (hypothétique) de la question. Si il y a un certain avantage dans le pavillon, et l'on n'est pas à l'aide des informations de type, pourquoi ne faudrait-il pas inclure le drapeau?
- Pourquoi ne devriez-vous pas? La loi du moindre surprise. Un jour, quelqu'un va être très surpris de voir qu'à l'aide d'un langage standard fonction des sauts de le construire.
- J'ai été de la programmation dans une mémoire très limitée de l'environnement (petit bras) quand j'ai posé cette question, si la désactivation de RTTI est un bon gain.
Vous devez vous connecter pour publier un commentaire.
Depuis 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.
Il y a une discussion sur la relation entre les fonctions virtuelles et le RTTI disponible à Pas de RTTI, mais encore des méthodes virtuelles. La version courte est que les fonctions virtuelles doit être fine sans RTTI.
Nous avons utilisé gcc sans rtti pour 5 ans avec pas de problèmes spécifiques (n'utilisant pas dynamic_cast ou typeid)