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.