2011-04-26 6 views
2

OK 선언되지 않은이 정말 짜증나 내가 가능 (거의) 간단한 클래스가 두 파일 :.. a.cpp와 아 아 :심지어 컴파일되지 않습니다 간단한 클래스는, "

#ifdef A_H 
#define A_H 
class a{ 
    public: 
    a(); 
}; 
#endif 
내가 뭔가 잘못하고있는 중이 야, 분명히

g++ a.cpp a.cpp:3: error: ‘a’ has not
been declared

을하지만, w :

및 a.cpp

#include "a.h" 
a::a(){ 
} 

아직이 컴파일되지 않습니다 모자?

난 다음 다시 시도 #ifndef#ifdef 교체 #ifndef

답변

15

#ifdef A_H 

요구 사항이 정의되지 않은 경우와 같이

#ifndef A_H 

통지를 "N"이 될 수 있기 때문이다.

전자는 A_H가 정의 된 경우에만 코드를 컴파일합니다.이 코드는 다음 행에서만 정의하기 때문에 코드를 컴파일하지 않습니다.

15

으로 #ifdef와 대체, 수정했습니다.

일부 IDE는 매우 유용합니다. 현재 매크로 정의와 같이 컴파일되지 않을 코드를 입력하고 '회색'글꼴로 표시하는 동안 코드를 구문 분석합니다. 또한, 당신이 이미 알고있는 gcc 인수 다음에

gcc -E

를 실행 코드 (매크로 프리 프로세서에 의해 해결 전처리 한 후 컴파일 될 것입니다 무엇을 보여줄 것이다, 컴파일 건물 툴체인의 초기 단계).

관련 문제