C 헤더 파일 전처리

C 헤더 파일 전처리

파일에 특정 이름이 정의되어 있는지 여부에 따라 포함되거나 생략되는 많은 섹션이 있는 큰 헤더 파일이 있습니다. 예를 들어 다음과 같은 줄이 있습니다.

\#define A
\#define B 2
...
\#ifdef A
  ...
  ...
\#endif
...
\#ifdef B
  ...
  \#ifndef A
    ...
  \#endif
\#endif

정의된 이름과 정의되지 않은 이름으로 인해 생략된 부분을 모두 제거한 파일을 생성하고 싶습니다. 또한 출력 파일에서 단일 및 여러 줄 주석을 제거하고 싶습니다.

나는 열심히 노력했다

gcc -E Configuration.h > Configuration.i

그러나 이것은 다음과 같은 출력만을 생성합니다 -

1 "Configuration.h"
1 "built-in" 1
1 "built-in" 3
341 "built-in" 3
1 "command line" 1
1 "built-in" 2
1 "Configuration.h" 2

(위의 텍스트에서는 실제로 각 줄 앞에 해시 문자가 있고 "내장" 및 "명령줄"이라는 단어가 꺾쇠 괄호로 묶여 있는데 이러한 문자를 내 메시지에 입력하면 이상한 효과가 나타납니다.)

내가하려는 일을 어떻게 할 수 있는지에 대한 제안. 이 작업을 수행하기 위해 코드나 스크립트를 작성할 필요가 없습니다.

답변1

옵션 사용 -P(선 표시 생성 비활성화):

gcc -P -E -xc input > output

다른 흥미로운 옵션은 -C-fpreprocessed페이지에서 찾을 수 있습니다 gcc(1).

관련 정보