인자 앞에#토큰에서 매크로
-
28-09-2020 - |
문제
#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,그래서 그는 경우 Hello
나 World
었으로 정의 매크로,결과는 여전히 동일합니다.필요하신 사용 추가 수준의 간접 을 얻을 인수를 매크로로 대체(는 연결 대답에 대해 설명합 연결 연산자, ##
, 하지만 동일하게 적용 stringization 연산자입니다.
제휴하지 않습니다 StackOverflow