programar lista juegos funciones ejemplos como comandos codigos codigo basicos c++ c visual-c++ casting code-analysis

lista - como programar en c++ pdf



¿Cómo encontrar(y reemplazar) todos los moldes de tipo de datos de estilo C antiguos en mi código fuente de C++? (4)

¿Por qué necesitas eso? ¿Desea deshacerse de todos ellos?

Los moldes estilo C para tipos fundamentales como (double) son seguros y se ven mucho mejor que static_cast<double>() . Yo personalmente prefiero este estilo.

En el caso de las clases polimórficas, el problema de los moldes de estilo C es extremadamente exagerado. Puede ser un problema solo si usa herencia múltiple y tiene que hacer cross-casting. Por defecto, los moldes de estilo C no funcionarán allí. Pero en la mayoría de los casos () funciona exactamente como static_cast<>() y no perdería tiempo en reemplazarlos. De todos modos, para los tipos polimórficos, utilizo moldes de estilo C ++ cuando escribo un nuevo código o cambio algo.

ACTUALIZAR:

Chicos, parece que expresé mi opinión no tan claramente. Sí, conozco la teoría: C ++: el yeso es bueno, C-cast es malo. Esta regla (y la mayoría de las demás) es necesaria para salvar a los novatos de C ++. Pero eso no significa que siempre necesites seguirlo.

Mi punto es que los moldes estilo C no son tan terribles. Si escribes alguna función como

int convertFooToBar(double i_foo)

, no hay razones para usar moldes de estilo C ++ en implementación. No son más seguros que (int) pero se ven desordenados. Casting no es complicado en tal caso. No es nada malo o complicado en el casting: a veces los moldes son naturales.

Acerca de la búsqueda: no recuerdo haber estado buscando ningún enunciado emitido en los últimos 10 años, aunque mantengo varios millones de líneas de código C ++ heredado a diario. Ni siquiera recuerdo ningún problema serio debido a un casting incorrecto.

La pregunta original se trata de reemplazar los moldes de estilo C ya escritos. Entonces, mi respuesta es:

Sí, los moldes de estilo C ++ son mejores y más seguros que los de estilo C. Pero eso no significa que deba buscar los antiguos en su código y tratar de deshacerse de todos ellos. En realidad, no es un problema real. Simplemente no pierdas tu tiempo. Puede gastarlo en buscar y eliminar algún código desactualizado. Sería más útil para tu código base.

¿Cómo puedo ubicar todo el elenco viejo estilo C en mi fuente?

Estoy usando Visual Studio. ¿Hay alguna advertencia del compilador que deba habilitar?


Desafortunadamente, no hay una advertencia de compilación en Visual C ++ que señale estos cambios (al menos no uno que yo sepa), aunque parece que PC-Lint proporciona una advertencia / nota que te advierte si utilizas un estilo antiguo. emitir. Depende de si está dispuesto a gastar el dinero en PC-Lint; en mi opinión, definitivamente vale la pena para todos los problemas que puede encontrar con él ...


No sé de un modificador de compilador que informe estos, o cualquier otra cosa incorporada en Visual Studio.

Sin embargo, aquí hay una secuencia de comandos de Perl que buscará en su árbol fuente y encontrará todos los moldes de estilo C en su fuente. Funciona bastante bien para rastrearlos.


GCC tiene la opción -Wold-style-cast que te advertirá si encuentra algún -Wold-style-cast C.