문제

학습과 시연을 위해서는 매개 변수를 인쇄하는 매크로가 필요합니다. 그리고 그것을 평가합니다. 나는 그것이 매우 일반적인 경우라고 생각합니다. FAQ 일 수도 있지만 실제 참조를 찾을 수는 없습니다.

내 현재 코드는 다음과 같습니다.

#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", __STRING(expr), (expr)))

그리고:

PRINT(x & 0x01);

잘 작동하지만 특히 개인 __ 네임 스페이스에 있기 때문에 __string 매크로의 법적 지위가 확실하지 않습니다.

그래서 내 질문 :

  1. 이 매크로를 작성하는 더 좋은 방법이 있습니까?
  2. __string Standard/Great/Evil입니까?
  3. 기존 검색 도구를 사용하여 __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)))

아마 당신이 원하는 것일 것입니다. #은 문자열 연산자입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top