He estado desarrollando C++ durante menos de un año, pero en ese momento, he escuchado a varias personas hablar sobre lo horrible que es #define
. Ahora, me doy cuenta de que es interpretado por el preprocesador en lugar del compilador, y por lo tanto, no se puede depurar, pero, ¿es esto realmente tan malo?Alternativas al uso de "#define" en C++? ¿Por qué está mal visto?
Aquí es un ejemplo (código no probado, pero se entiende la idea general):
#define VERSION "1.2"
#include <string>
class Foo {
public:
string getVersion() {return "The current version is "+VERSION;}
};
- ¿Por qué es este código malo?
- ¿Existe alguna alternativa al uso de
#define
?
El inverso de esta pregunta: [Por qué usar #define en lugar de una variable] (http://stackoverflow.com/questions/6004963/why-use-define-instead-of-a-variable) –
'define' s son construcciones complicadas y pueden ser fácilmente mal usadas o abusadas. pero al igual que 'goto' pueden ser muy útiles. – Anycorn
posible duplicado de [static const vs #define] (http://stackoverflow.com/questions/1637332/static-const-vs-define), en particular esta [respuesta] (http://stackoverflow.com/a/ 3835772/61574) debería ser suficiente. – Anonymous