표현을 인쇄하고 그것을 평가하는 매크로 (__string)
-
22-08-2019 - |
문제
학습과 시연을 위해서는 매개 변수를 인쇄하는 매크로가 필요합니다. 그리고 그것을 평가합니다. 나는 그것이 매우 일반적인 경우라고 생각합니다. FAQ 일 수도 있지만 실제 참조를 찾을 수는 없습니다.
내 현재 코드는 다음과 같습니다.
#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", __STRING(expr), (expr)))
그리고:
PRINT(x & 0x01);
잘 작동하지만 특히 개인 __ 네임 스페이스에 있기 때문에 __string 매크로의 법적 지위가 확실하지 않습니다.
그래서 내 질문 :
- 이 매크로를 작성하는 더 좋은 방법이 있습니까?
- __string Standard/Great/Evil입니까?
- 기존 검색 도구를 사용하여 __string에 대해 찾는 방법은 무엇입니까? So의 검색 엔진은 문자열이 포함 된 모든 것을 검색합니다 :-(
해결책
RHS 인수를 문자열로 변환하는 # 사전 프로세서 토큰을 사용할 수 있습니다.
#include <stdlib.h>
#include <stdio.h>
#define STR(x) #x
#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", STR(expr), (expr)))
int main(void)
{
int x = 7;
PRINT(x & 0x01);
return EXIT_SUCCESS;
}
2) 그것은 확실히 표준이 아니며, 내가 처음 접한 것은 이번이 처음입니다. 첫눈에 위의 str () 매크로보다 훨씬 더 많은 일을하는 것처럼 보이기 때문에 놀라운 일이 아닙니다.
3) Google 잘 작동하는 것 같습니다.
다른 팁
같은 것
#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", #expr, (expr)))
아마 당신이 원하는 것일 것입니다. #은 문자열 연산자입니다.
제휴하지 않습니다 StackOverflow