원글(이글루): 2011-03-21 02:03:44
C/C++ Linux/Unix환경에서 ifdef 쉽게 추가하고 삭제하는 방법입니다.
1) vi에서 ifdef 편하게 넣기
~/.vimrc에 다음과 같이 추가
func! InsertIfdef(DEFNAME)
exe "normal 0i#ifdef ".a:DEFNAME
exe "normal a\<ENTER>#else // ".a:DEFNAME
exe "normal a\<ENTER>#endif // ".a:DEFNAME
exe "normal a\<ENTER>"
endfunc
map <F8> :call InsertIfdef("AAA") <CR>
추가한후 바로 적용하려면,
:source ~/.vimrc
하시면 되구요.
사용할땐 F8 만 누르면 ifdef 하고 지정한 게 들어가게 됩니다.
2) ifdef 제거하기
unifdef 간단한 사용법
C/C++ Linux/Unix환경에서 idef 어쩌구 된것을 제거해주는 어플입니다.
ex) BBB는 undefine형태이고 AAA는 define 한것을
추출할때,
unifdef test.cpp -UBBB -DAAA >t
출처가 사라질까봐 첨부파일로 unifdef 소스 첨부합니다.
unifdef-2.6.tar.gz
- 출처: http://freshmeat.net/projects/unifdef
- help정보
usage: unifdef [-bBcdeKknsStV] [-Ipath] [-Dsym[=val]] [-Usym] [-iDsym[=val]] [-iUsym] ... [file]
- 이외에도 vim에서 해주는 스크립트가 있는데,
http://www.vim.org/scripts/script.php?script_id=2381
좀 완성도가 미흡한 점이 있어서 unifdef 유틸을 강추합니다.
unifdef는 define되었다고 지정한 것과 안했다고 지정한 것만 건들여주더군요.
부록1) vim에서 make 단축키 걸기
추가로 gcc/g++에서 Makefile을 사용한다면
map <F9> :call Compile() <CR>
func! Compile()
exe ":wa"
exe ":!make"
endfunc
이렇게 해놓고 F9를 활용하는 것도 좋다. 전체 창을 Save하고 make를 실행해주는 것이다.
부록2) ifdef 테스트 예제
#define AAA
// comment 1
#ifdef BBB
#ifdef AAA
// comment 2
#else // AAA
// comment 3
#endif // AAA
#else // BBB
#ifdef AAA
// comment 4
#else // AAA
// comment 5
#endif // AAA
#endif // BBB
부록3) 현재 디렉토리에서 특정 define을 unifdef 돌려서 OUT디렉토리로 넣는 스크립트
( 이거랑 http://parkmo.egloos.com/3922433 를 같이 써서 잘되는지도 비교해 보면 좋을 듯 )
#!/bin/bash
FIND_DEFINE="$1"
OUT_DIR=OUT
BIN_FILE=unifdef
if [ "${FIND_DEFINE}" == "" ]; then
echo "$0 <define>"
exit
fi
FILE_LIST=`grep -l ${FIND_DEFINE} *.cpp *.h`
mkdir -p ${OUT_DIR}
for ACC in $FILE_LIST
do
echo "unifdef -D${FIND_DEFINE} ${ACC} > ${OUT_DIR}/${ACC}"
${BIN_FILE} -D${FIND_DEFINE} ${ACC} > ${OUT_DIR}/${ACC}
done
'IT > 프로그래밍' 카테고리의 다른 글
java/jsp 해당 메소드가 있는지 체크 (0) | 2023.09.13 |
---|---|
[svn] update칠때 날짜와 시간으로 하기 (0) | 2023.09.13 |
[bash] 코드 변경사항 vimdiff로 열어주는 스크립트 (0) | 2023.09.13 |
[python] dict 를 sort해서 list로 넣기 (0) | 2023.09.13 |
gdb command 활용#1 (0) | 2023.09.13 |