전처리 중에 매크로가 포함 된 메시지를 인쇄하려면 어떻게합니까?매크로가 포함 된 전 처리기 메시지
예컨대 :
#define MACRO_1 1
#pragma message ("Date:" __DATE__) // OK
#pragma message ("MACRO_1 = " MACRO_1) // error: pragma message requires parenthesized string
전처리 중에 매크로가 포함 된 메시지를 인쇄하려면 어떻게합니까?매크로가 포함 된 전 처리기 메시지
예컨대 :
#define MACRO_1 1
#pragma message ("Date:" __DATE__) // OK
#pragma message ("MACRO_1 = " MACRO_1) // error: pragma message requires parenthesized string
당신이 할 일은 확장 후 처리기 MACRO_1을 stringize하는 것입니다. #pragma message()에 # MACRO_1을 삽입 할 수 없습니다. 이 경우 #pragma message() 내에서 전 처리기가 보는 내용은 "# MACRO_1"이고 "1"이 아닙니다. 그러나 SSTRINGIZE (x)를 사용할 때 (아래 예제에서와 같이) 선 처리기가 MACRO_1을 확장 (해당 값을 1로 얻음) 한 다음 문자열로 변환합니다 (문자열로 변환). 마지막으로 #pragma message()의 끝에 "1"이라는 문자열을 얻습니다.
이 코드를 시도하십시오. 의도 한대로 인쇄 해주십시오.
#define MACRO_1 1
#pragma message ("Date:" __DATE__)
#define STRINGIZE(x) "MACRO_1 = " #x
#define SSTRINGIZE(x) STRINGIZE(x)
#pragma message (SSTRINGIZE(MACRO_1))
MACRO_1의 결과가 작동하려면 문자열 ("1")이어야합니다. 당신은'#pragma message ("MACRO_1 ="# MACRO_1 ")을 사용하여 그것을 코드로 문자열화할 수 있습니다. https://gcc.gnu.org/onlinedocs/cpp/Stringification.html – IdeaHat
@IdeaHat - 단일 #을 사용하기 위해 "1"문자열을 사용하려고했지만 동일한 오류가 계속 발생합니다 ... – Pietro