문제

나는 사용하고 싶다 :

#define

그리고

#if

단위 테스트 중에 잠재적으로 결석 한 하드웨어를 시뮬레이션 할 수 있습니다. 사용하는 규칙은 무엇입니까 #define 진술?

즉 기본 범위는 무엇입니까? 지침의 범위를 변경할 수 있습니까?

도움이 되었습니까?

해결책

Chris가 말했듯이 #Define의 범위는 파일 일뿐입니다. (이것은 "클래스"와 동일하지 않다는 점에 주목할 가치가 있습니다. 부분 유형이있는 경우 두 개의 파일로 구성 될 수 있습니다. 그 중 하나는 기호가 정의되어 있고 그 중 하나는 그렇지 않습니다!

프로젝트 전체의 기호를 정의 할 수도 있지만 프로젝트 속성 또는 a 컴파일러 스위치 소스 코드에 지정되는 대신.

다른 팁

에서 MSDN, 그 범위는 파일입니다

모의 물체의 경로를 내려갈 수는 없지만 Ala mock.rhinos ?

예 Chris가 언급했듯이 그 범위는 전체 파일입니다. 파일의 어느 곳에서나 정의 된 키워드를 사용할 수 있습니다.

즉;

#define something
... some code ...

그리고 어떤 방법, 클래스 본문 또는 네임 스페이스에서, 당신은 그것을 사용할 수 있습니다.

#if something
  ... some conditional code ...
#else
  ... otherwise ...
#endif

사전 처리기 지침의 범위는 소스에서 구문 분석 될 때 시작되어 달리 지시 될 때까지 지속됩니다. 전처리 서기 지침의 범위를 제한하려면 "undef"선언을 사용하여 전환 할 때 전환하십시오.

#include <iostream>
using namespace std ;
int main()
{
  #define someString "this is a string"
  cout<<someString<<endl;
  #undef someString  // scope of someString ends here
  cout<<someString<<endl; //this causes a compile error
  return 0 ;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top