tengo un Archivo C++ como estoen C++, ¿qué tiene de especial "_MOVE_H"?
#ifndef _MOVE_H
#define _MOVE_H
class Move {
int x, y;
public:
Move(int initX = 0, int initY = 0) : x(initX), y(initY) {}
int getX() { return x; }
void setX(int newX) { x = newX; }
int getY() { return y; }
void setY(int newY) { y = newY; }
};
#endif
Y para mi sorpresa, todo el código entre #ifndef
y #endif
es simplemente ignorado por el compilador (Juro que no estoy definiendo _MOVE_H
cualquier otro lugar), y tengo todo tipo de errores sobre las definiciones faltantes. Estaba pensando que hice algo mal, pero cuando trato de usar otra clave (como _MOVE_Ha
, todo vuelve a la normalidad. ¿Tiene _MOVE_H
algo especial en C++?
Estoy ejecutando Ubuntu 10.04, GCC 4.4.3 , si lo que importa
Gracias,
puede ser uno de los archivos de la biblioteca que está usando para su inclusión Guardia? lo revisaste? Por cierto, normalmente prefijo con el nombre del proyecto para evitar exactamente este tipo de problema. – Naveen
Otra razón para usar '#pragma una vez' en lugar de' # define' incluye guardias ... – Inverse
@Inverse, '#pragma once' es una extensión del compilador y no es compatible con todos los compiladores. Los guardias de inclusión son los únicos medios independientes seguros del compilador para evitar la inclusión múltiple. –