Mam C++ plik jak tow C++, co jest takiego specjalnego w "_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
I ku mojemu zaskoczeniu, cały kod pomiędzy #ifndef
i #endif
jest po prostu ignorowane przez kompilator (przysięgam, że nie jestem definiowania _MOVE_H
nigdzie indziej), i mam wszelkiego rodzaju błędy dotyczące brakujących definicji. Myślałem, że zrobiłem coś nie tak, ale kiedy próbuję użyć innego klucza (jak _MOVE_Ha
, wszystko wróciło do normy. Czy _MOVE_H
oznacza coś specjalnego w C++?
Używam Ubuntu 10.04, GCC 4.4.3 jeśli to się liczy
Dzięki
może być jednym z plików biblioteki, które są w tym przy użyciu tego dla jego strażnika włączenia? sprawdziłeś to? btw, zwykle poprzedzam go nazwą projektu, aby uniknąć właśnie tego rodzaju problemu. – Naveen
Innym powodem użycia '#pragma raz' zamiast' # define' jest ochrona ... – Inverse
@Inverse, '#pragma once' jest rozszerzeniem kompilatora i nie jest obsługiwane przez wszystkie kompilatory. Dołączenie strażników jest jedynym bezpiecznym, niezależnym od kompilatora sposobem zapobiegania wielokrotnemu włączaniu. –