emacs의 query-replace-regexp를 사용하여 C의 전역 선언에서 extern 선언 생성

emacs의 query-replace-regexp를 사용하여 C의 전역 선언에서 extern 선언 생성

내 .c 파일에는 다음과 같은 전역 선언이 많이 있습니다.

fi_status_t ACLINFRA_CORE_OK = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_FI_STATUS_OK }, NULL };
fi_status_t ACLINFRA_CORE_ERR_GDFW_REG_FAILED = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_CORE_ERR_GDFW_REG_FAILED }, NULL };
fi_status_t ACLINFRA_CORE_ERR_DHAS_REG_FAILED = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_CORE_ERR_DHAS_REG_FAILED }, NULL };
fi_status_t ACLINFRA_CORE_ERR_GDFW_REQ_FAILED = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_CORE_ERR_GDFW_REQ_FAILED }, NULL };

이제 그것들을 뽑아서 .h파일로 붙여넣었습니다. 하지만 emacs를 사용하여 이를 동등한 extern선언 으로 쉽게 변환할 수 있는 방법은 무엇입니까 query-replace-regexp?

외부 선언은 다음과 같습니다.

extern fi_status_t ACLINFRA_CORE_OK;

답변1

로 교체되다 ^\(\w.*?\) *=.*
:extern \1;

설명: ^단어 구성 요소( )로 시작하고 \w그 뒤에 줄 바꿈( )을 제외한 모든 문자가 .*?0개 이상의 공백( )이 처음 나타날 때까지 ​ *그 뒤에 등호 및 줄 바꿈을 제외한 등호( )가 오는 행과 일치합니다. ) =.*). 행의 부분(등호 뒤에 오는 선택적 공백 제외)은 대체 텍스트를 로 사용할 수 있는 그룹에 배치됩니다 \1.

M-x flush-lines초기화 프로그램이 여러 줄에 걸쳐 있는 경우 정규식에서 공백으로 시작하는 줄을 제거해야 할 수도 있습니다 ^\s-.

관련 정보