적어도 일부 C 전처리기를 사용하면 하나의 함수와 유사한 매크로를 통해이를 문자열 화하는 다른 매크로로 전달하여 매크로의 이름이 아닌 값을 문자열화할 수 있습니다.
#define STR1(x) #x
#define STR2(x) STR1(x)
#define THE_ANSWER 42
#define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */
이것은 적어도 GCC와 Clang (둘 다 -std=c99
)에서 작동하지만 C 표준 용어로 어떻게 작동 하는지 잘 모르겠습니다 .
이 동작이 C99에 의해 보장됩니까?
그렇다면 C99는 어떻게 보장합니까?
그렇지 않은 경우 어떤 시점에서 동작이 C 정의에서 GCC 정의로 이동합니까?