문자열화 이해: 매크로 확장의 주요 단계
C 유사 언어의 문자열화 개념을 사용하면 표현식을 문자열로 변환할 수 있습니다. 효과적인 매크로 사용을 위해서는 이 프로세스에 포함된 단계를 이해하는 것이 중요합니다.
문제: 출력 차이
다음 매크로 정의를 고려하세요.
#define foo 4 #define str(s) #s
코드에서 str(foo)를 사용하면 텍스트 확장(단계) 전에 문자열화(1단계)가 수행되므로 "foo"가 출력됩니다. 2).
그러나 추가 매크로를 정의하는 경우:
#define xstr(s) str(s)
그리고 xstr(foo)를 사용하면 놀랍게도 "4"가 출력됩니다. 이러한 차이를 보려면 문자열화 프로세스를 탐색해야 합니다.
매크로 확장 단계
매크로 확장 프로세스에는 C 및 C 표준에 따라 여러 단계가 포함됩니다.
xstr(foo)에 단계 적용
str(foo)가 "foo"를 출력하는 이유
xstr(foo)와 달리 str(foo)는 "foo"를 생성합니다. 이유:
따라서 xstr과 같은 도우미 매크로를 사용하면 문자열화(1단계) 전에 텍스트 확장(2단계)이 수행되어 올바른 문자열 변환이 가능해집니다.
위 내용은 C와 유사한 매크로 확장에서 `str(foo)`가 'foo'를 출력하는 동안 `xstr(foo)`는 '4'를 출력하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!