포함된 모든 라이브러리를 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
.