나는 (내가 다른 곳 _MOVE_H
을 정의하고 있지 않다 맹세) #ifndef
와 #endif
사이의 모든 코드는 단순히 컴파일러에 의해 무시하는 C이(C++), "_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
처럼 나의 놀람에 파일 ++, 그리고 내가 가진 누락 된 정의에 대한 모든 종류의 오류. 내가 뭔가 잘못했다고 생각했는데 다른 키 (예 : _MOVE_Ha
)를 사용하려고하면 모든 것이 정상으로 돌아갑니다.
저는 Ubuntu 10.04, GCC 4.4.3을 실행하고 있습니다. 그 중요한 경우
감사합니다,
당신은 포함 경비원을 위해 그것을 포함하는 라이브러리 파일 중 하나가 될 수 있습니까? 그걸 확인 했니? btw, 나는 보통 문제의이 유형을 피하기 위해 일반적으로 프로젝트 이름 앞에 붙인다. – Naveen
'# define '대신'#pragma once'를 사용하는 또 다른 이유는 ... – Inverse
@Inverse,'#pragma once'는 컴파일러 확장이며 모든 컴파일러에서 지원하지 않습니다. Include guards는 다중 포함을 방지하는 유일한 컴파일러 독립적 인 수단입니다. –