파일에 특정 이름이 정의되어 있는지 여부에 따라 포함되거나 생략되는 많은 섹션이 있는 큰 헤더 파일이 있습니다. 예를 들어 다음과 같은 줄이 있습니다.
\#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)
.