2016-06-28 4 views
1

나는 이와 같은 뭔가를 작성하는 경우 :클래스 내부에서 해당 클래스에 대해 비공개로 정의되어 있습니까?

class myclass 
{ 
#define ADD(x,y) {return x+y} 

public: 

} 

는 내 클래스에 개인 정의인가?

참고 : * .hpp에서 정의하고 있으며이 소스 코드를 다른 소스 코드에 포함 시키면 다른 소스 코드가이 정의에 액세스하지 못하도록하고 싶습니다.

동일한 작업을 수행 할 수있는 C++에서 #define을 사용하는 것보다 더 좋은 해결책이 있습니까?

사용 방법은 무엇인가요? 내 수업에 비공개인가요? 아닙니다.

class myclass 
{ 
using std; 

public: 

} 
+1

가능한 복제본 : http://stackoverflow.com/questions/6379489/scope-of-define-preprocessor-in-c – DeathTails

+0

@DeathTails 감사합니다. C의 경우이 하나가 C++의 경우입니다. 같은? – mans

+1

이 경우 예. 대답과 그 이유는 정확히 같습니다. –

답변

6

결코 그렇지 않을 수도 있습니다.

소스 코드가 읽히고 분석되기 전에 모든 사전 처리기 명령 (#...)이 처리되므로 사용자가 입력 한 모든 위치에 아무런 영향이 없습니다. 시퀀스 (서로를 기반으로하는 경우)와 사용법 (이전/이후)에 대한 상대적 위치가 중요합니다.

전처리 명령이 '여기에서 찾기/바꾸기'와 같은 것으로 상상할 수 있습니다.

0

#define의 범위를 제한하려면 #undef를 사용할 수 있습니다. 아마도 여러분은 자신이 생성하지 않은 정의의 범위를 제한하기 위해 그것을 사용할 수도 있습니다.