C 전 처리기에서 메시지를 인쇄하는 이식 가능한 방법이 있습니까?
나는 다음과 같은 것을 할 수 있기를 원합니다.
#print "C Preprocessor got here!"
디버깅 목적으로. 이 작업을 수행하는 가장 좋은 / 가장 이식 가능한 방법은 무엇입니까?
이 warning
지시문은 아마도 여러분이 얻을 수있는 가장 가까운 것일 수 있지만 완전히 플랫폼 독립적 인 것은 아닙니다.
#warning "C Preprocessor got here!"
AFAIK는 pragma
지시문 을 사용해야하는 MSVC를 제외한 대부분의 컴파일러에서 작동 합니다.
#pragma message ( "C Preprocessor got here!" )
#pragma message("stuff")
#pragma message "stuff"
Clang은 최근에 지원을 추가하기 시작했습니다 . 자세한 내용은 여기 를 참조 하세요 .
시도해 볼 수 있습니다. #pragma message("Hello World!")
대부분의 C 컴파일러는 #warning
지시문 을 인식 하므로
#warning "Got here"
표준 '#error'지시문도 있습니다.
#error "Got here"
모든 컴파일러가이를 지원하지만 컴파일 / 전처리도 중지됩니다.
#pragma message("foo")
잘 작동합니다. -Werror를 사용해도 컴파일을 멈추지 않습니다.
또 다른 해결책은 주석과 쉘 스크립트를 사용하여 처리하는 것입니다. 이것은 약간의 규율 (또는 오타를 포착하는 쉘 스크립트)을 필요로합니다.
예를 들어, 형식화 된 주석을 추가 한 //TODO
다음 모든 주석을 보고서로 수집하는 쉘 스크립트를 추가합니다.
더 복잡한 사용 사례의 경우 자신 만의 간단한 전처리기를 작성할 수 있습니다. 예를 들어 소스를 *.c2
파일 로 편집 할 수 있습니다. 간단한 전처리 기는 소스를 읽고를 찾고 출력 파일에 //TODO
씁니다 .printf("TODO ...")
*.c
당신은 할 수 없습니다. 전처리 기는 C 코드보다 먼저 처리됩니다. 전 처리기 코드가 실행되지 않기 때문에 화면에 인쇄 할 전 처리기 지시문이 없습니다. 실행 코드로 컴파일 될 C 코드를 생성하는 데 사용됩니다.
문제가있는 경우 :
#ifdef ...
printf("Hello");
#endif
이것은 전처리 기가가는 한 할 수있는 전부이기 때문입니다.
'Programing' 카테고리의 다른 글
안전하게 홈 디렉토리 변경 (0) | 2020.09.24 |
---|---|
iOS 4.0 iTunes 백업에서 Manifest.mbdb 파일을 구문 분석하는 방법 (0) | 2020.09.24 |
OpenGL ES 대 OpenGL (0) | 2020.09.24 |
Android : ScrollView가 스크롤을 중지 할 때 감지 (0) | 2020.09.24 |
문자열에 포함 된 경우 Postgresql SELECT (0) | 2020.09.24 |