다음은 지나치게 단순화 된 버전입니다. #define LOGDIRECTORY C:\\logs\\
system("mkdir LOGDIRECTORY");
그러나 전 처리기는 정의 된 이름을 스왑 아웃하는 대신 그렇지 않습니다. 대신 시스템 명령은 실제로 LOGDIRECTORY이 이름이라고 생각하므로 프로그램을 시작할 때 오류가 발생합니다. 잘못되었다는 것
표준의 좋은 C++ 구현을 알고있는 분 C 전처리 기가 있습니까? 나는 C++ C 코드를 분석 관련 프로젝트에서 일하고 있어요, 나는 매크로 등을 지원하기 좋아하지만 C 전처리 자신을 구현에 관심이 아니에요 것 . 이상적으로는 프리 프로세서는 메인 C 파일의 파일 이름에 걸릴 것이고, 전처리 C 코드의 스트림을 반환합니다. 누구나 간결하지만 포괄적 인 참조
나는 헤더 파일에 정의 된 내하는 .m 파일에 포함 할 때 잘 실행 매크로의 몇 가지를 작성했습니다. 언제든지 헤더를 포함하지 않고 모든 .m 파일에서이 매크로를 사용할 수 있습니까? 로깅 및 문자열 형식 매크로를 들어이 정말 불편 보인다. 저는 XCode 설정이 빠져 있거나 뭔가 빠졌음을 확신하지만 Google에서별로 행운이 없었습니다.
면책 조항 : 프로그래머가 아닙니다. 최근에 친구의 프로젝트를 보았습니다. 이해할 수없는 이유 때문에 런타임에 컴파일되는 문자열에 코드를 씁니다. 이 같은 결과 : 비주얼 스튜디오에서 단계 및 일부 전처리 남용을 사용하는 등 구문 강조를하지 않기 때문에 사용이 끔찍 char x[] = "int y = 5; printf(\"%i\", y)";
run_thi
전처리 기가 어떻게 작동하는지에 대한 내 정신 모델이 분명히 불완전하기 때문에 이것이 나를 미치게 만듭니다. 두 개의 토큰을 연결하려고하지만 두 번째 토큰을 먼저 확장해야합니다. 여기 #define ANSWER 42
#define FOO foo_ ## ANSWER
는 FOO는 foo_ANSWER로 확장,하지만 난 그게 foo_42되고 싶어요. 그래서
오류 메시지를 잡아서 인쇄하기 위해 일부 코드를 계측하려고합니다. 현재 다음과 같은 매크로를 사용하고 있습니다. #define my_function(x) \
switch(function(x)) { \
case ERROR: \
fprintf(stderr, "Error!\n"); \
break; \
}
일반적
사용자 정의 gcc 전 처리기 작성 예제를 제공해 주시겠습니까? 내 목표는 SID ("foo") 비슷하게 매크로를 적절한 CRC32 계산 값으로 대체하는 것입니다. 다른 매크로의 경우 표준 cpp 전 처리기를 사용하고 싶습니다. -no-integrated-cpp -B 옵션을 사용하여이 목표를 달성 할 수있는 것처럼 보이지만 간단한 사용 예는 찾을 수 없습니
먼저이 질문에 대한 질문이 있거나 너무 순진한 경우 사과드립니다. 나는 그것을 찾았고 찾을 수 없었다. 이들 (전처리 기 정의)는 정적/동적 라이브러리로 컴파일됩니까? 예를 들어 FBX SDK에는 KFBX_DLLINFO이 필요합니다. FBX SDK을 사용하는 라이브러리에는이를 포함해야합니다. 이제 제한된 실험에서 알 수있는 한 클라이언트 애플리케이션은 정의