문제

#define LINK_ENTITY_TO_CLASS(mapClassName,DLLClassName) \
    static CEntityFactory<DLLClassName> mapClassName( #mapClassName );

이 매크로에서 외국인 군단의 모드 2,의미를 컴파일 MSVC.

나는 본 적이 없어 인자 앞 # 매크로 전에,그리고 나는 확실하지 않으면 이것은 MSVC 특정한 것 또는 흔하지 않습니다.그것이 무엇을 의미합니까?

도움이 되었습니까?

해결책

이 부분 모두의 표준 C/C++과하지 않은 구현별로 다릅니다.이 # 전처리 연산자 stringizes 인수.그것은 무엇이든 토큰을 전달되었으로 매크로에 대한 매개 변수 지정하여 그 연산자(이 경우에는 매개변수 mapClassName 러)문자열 리터럴 있습니다.그래서,간단한 예제

#define STRINGIZE(x) # x

STRINGIZE(Hello World)
// gets replaced with
"Hello World"

참고 인수할 수 있는 토큰 매크로로 대체하기 전에 그들은 stringized,그래서 그는 경우 HelloWorld 었으로 정의 매크로,결과는 여전히 동일합니다.필요하신 사용 추가 수준의 간접 을 얻을 인수를 매크로로 대체(는 연결 대답에 대해 설명합 연결 연산자, ##, 하지만 동일하게 적용 stringization 연산자입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top