전처리 자 매크로 정의 값에 액세스합니다
-
16-09-2020 - |
문제
GCC_PREPROCESSOR_DEFINITIONS (또는 XCODE를 사용하는 경우 전처리 자 매크로 ")에서 매크로"foo= bar "를 추가하면"foo "값에 액세스하는 가장 좋은 방법은 무엇입니까?
현재, 나는 서투른 것을 사용한다 :
#define MACRO_NAME(f) #f
#define MACRO_VALUE(f) MACRO_NAME(f)
#ifdef FOO
NSLog(@"%s", MACRO_VALUE(FOO));
#else
NSLog(@"undefined");
#endif
.
"바"를 출력합니다
확실히, 더 좋거나 깨끗한 방법이 있어야합니까?
해결책
당신이하는 일은 (또는 stringify ) 매크로 값을 (또는 em> stringify)입니다.간접적 인 것은 불가피합니다.
GCC 전처리 수동 섹션 (아카이브 링크) 링크 된
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
str (foo)
==> "foo"
xstr (foo)
==> xstr (4)
==> str (4)
==> "4
. 다른 팁
NSLog(@"%s", #FOO);
.
stringification 그것은 이미 사용하고있는 기술입니다.그것이 무엇이 잘못 되었습니까?
제휴하지 않습니다 StackOverflow