C 파일에 포함된 콘텐츠 추출

C 파일에 포함된 콘텐츠 추출

포함된 모든 라이브러리를 C 파일로 추출해야 하는데 몇 가지 문제가 있습니다. 내 해결책은 다음과 같습니다.

grep -oP '#(?:\/\*\w*\*\/|)include(?:\/\*\w*\*\/|\s*)"\w*.h"|<\w*.h>' main.c

예를 들어, 이 정규식은 라이브러리를 사용합니다.

/*#include <stdlib.h>*/

이 스크립트를 만드는 방법을 모르겠습니다. #include 없이 라이브러리 이름만 지정하면 됩니다.

정규식이 제대로 작동하도록 수정하려면 어떻게 해야 하나요?

고쳐 쓰다:

메인 프로그램

#include  "string.h"
#include <stdlib.h>
 #include "math.h"
    #include "stdint.h"
#/*comment*/include /*comment*/ <fenv.h>  
//#include <iostream>
#/**/include "something.h"
/* comment */#include "float.h"
/*#include "library.h"*/
int main() {

}

내가 원하는 것은:

"string.h"
<stdlib.h>
"math.h"
"stdint.h"
<fenv.h>
"something.h"
"float.h"

답변1

컴파일러(또는 C 전처리기)에게 이 작업을 수행하도록 요청해야 합니다.

gcc -M main.c

main.c그러면 포함된 모든 헤더 (전이적으로 포함된 헤더 포함)를 포함하는 Makefile 스타일 종속성이 생성됩니다 . 주석 및 기타 전처리기 지시문( #if등 )을 올바르게 처리합니다 #ifdef.

관련 정보