coding시에, struct의 멤버 참조를 어떻게 하시나요?

ed.netdiver의 이미지

안녕하세요, 갑자기 이런 의문이 떠올라서 질문( ? ), 설문( ? )을 함 올려봅니다.
c에서는 struct, c++이라면 class등의 각 member들 있죠?
그게 프로그램이 커지고, data들이 많아지면, 자기가 만들어놓은 멤버들인데도
다 기억하기가 어렵잖아요.

이런 경우, editor에서 member 참조가 가능한 것들같으면, 바로
member들이 밑으로 쭈르륵 나와준다거나 하죠.
si랄지, vs랄지 그런것들이 대표적인 것들일텐데...
뭐 그런것들을 사용하신달지, 혹은 vi를 쓰는데 어떻게 참조해서 코딩한달지
뭐 그런 방법들이 있으실것 같습니다.
여러분은 어떻게 하시나요?
그럼 좋은 하루들 되세요^^;

yui의 이미지

vim를 씁니다.
ctrl+p, ctrl+n으로 자동완성 기능을 사용해서 멤버 이름을 채웁니다.
좀 무식한가요? -_-;

gurugio의 이미지

그거 정말 궁금합니다.

전 주로쓰는게 창을 하나 더 띄어서

헤더 파일을 열어놓거든요. 그래서 뒤져봅니다.

아니면 연습장에 적어 논거를 보면서 코딩하거든요.

좋은 방법이 없을까요?

낙엽의 이미지

ctags를 사용하시면, vim에서 ctrl+w 치시고 i 혹은 v 누르시면 새창으로 해당 구조체를 보실 수 있습니다.

meinside의 이미지

우와아악!!
그런 기능이 있었다니 :oops:

감사합니다 :D

--

“Life is like riding a bicycle. To keep your balance, you must keep moving.”

- Albert Einstein

낙엽의 이미지

linux에서 tag파일 생성하는 것은,
소스 디렉토리 최 상위에서 ctags -R . * 하시면 되겠구요..

sun이나 tru64에서는
소스 디렉토리 최 상위에서 touch tags로 파일을 먼저 생성한 뒤에(안해도 되지만..)
find ./ \( -name '*.c' -o -name '*.h' \) -exec ctags -u -f ./tags {} \;
하시면 됩니다.

소스 보시다가 함수참조를 보시려면 ctrl+] 을, 다시 돌아가려면 ctrl+t를
헤더나 변수를 보시려면 ctrl+w하고 i나 v를 누르시면 새 창에서 확인하실 수 있습니다.

수고하세요~

hey의 이미지

클래스의 메쏘드는 다들 어떻게 참조하시나요?
c에선 함수가 이름 공간 때문에 prefix를 포함하기 마련이라 다른 모듈의 함수라도 이름이 각각 다르게 되는 경향이 있는 반면, 클래스의 메쏘드는 같은 이름의 메쏘드가 여러 클래스에 있게 되는데요, ctags는 이것을 전혀 구분해주지 않습니다.
ctags의 man 페이지를 봐도 그런 내용이 있구요. (거기엔 버그라고 써놨는데 버그보다는 구조적인 문제가 아닌가?)


----------------------------
May the F/OSS be with you..


ed.netdiver의 이미지

많은 답변 주셔서 감사합니다.

저의 경우를 말씀드리면 이렇습니다.
지금 수행하는 과제의 경우 소스파일 갯수만 천개를 훌쩍 넘고, 바이트양으로도
거의 90메가에 육박하는데, vim+ctags+grep 조합은 아무래도
상용으로 잘 빠져있는 editor에 비해 시간이 좀 걸리는 건 사실입니다.

Ctrl+Wi의 경우도, 서치에 시간걸리고, 로딩에 시간걸리고,
그렇게 찾은 넘도 엉뚱한걸 찾아놓는 경우도 제법 되거든요.
그래서 edit 본연의 기능으로 보자면 vi를 따라갈 것이 없다고 보는데,
심볼정보관리기능같은것이 아쉽습니다.
아니면, 제가 모르는 기능이나 방법이 있어서, 그걸 사용하시는지도 모르고요.

하긴, 제가 아는 분은 ctags도 없이 매번 vi+grep만으로 코드를 작성하시는
분도 계시죠.
이분의 지론은 어느 파일의 어느 위치에 어떻게 생겨먹은 자료형이 있는지를
꿰고 있어야 하는데, 그러기 위해서 반복적으로 코드를 보는것밖에 답은
없다나요. (이렇게 말씀하신다고 그양반이 절대 머리나쁜 분이 아닙니다.
절라 날라댕기는 고수시죠ㅡ.ㅡ;)
그러기 위해서, 코딩시에 뭔가 코더를 편하게 해주는 갖가지 기능들은(ctags
포함) 오히려 개발자의 개발능력을 저하시키는 안좋은 것이라고 생각하십니다.

하지만, 삽질만이 대안이라곤 해도, 좀더 개발속도를, 아니 코딩속도를
높여줄만한것을 생각하지 않을수 없군요.

이상, 손등 근육이 땡기기 시작해서 잠시 노가리풀러 가야겠다 싶은
단순 코더였습니당^^; 좋은 하루하루 되세요...

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

김충길의 이미지

ctags 랑 사용할때 vim 에서 ctrl+w ctrl+] 연속도 편합니다.

트리 구조의 소스인 경우 tags 파일은 특정 디렉토리에 생기게 하고
set tags+=~/tmp/tags 이런식으로 태그 파일 목록을 지정할 수 있습니다.

Quote:

$ ctags -f ~/tmp/tags `find $PWD -name '*.h' -o -name '*.c'`

$PWD 를 사용하는게 중요한데 절대 경로로 표시되죠..

같은 파일인 경우 함수 두개를 편집중이다 그러면 :sp 기능을 사용합니다.

[ I 기능도 멎집니다. 이걸로 목록을 보고 [ tab 혹은 숫자 [ tab 눌러
참조한뒤 돌아올때 ctlr+o 를 사용합니다.

[ I 기능에서 검색 경로도 추가로 지정가능한데 .vimrc 파일에서

Quote:

set path+=myinc_path1, myinc_path2

처럼 지정할 수 있습니다. 저 path는 g f 기능에도 영향을 미칩니다.

예를 들어

#include "myheader.h"

저 라인의 myheader.h 위에 커서를 옮겨 놓고 g f 하면 그 파일이 바로 열리죠
이때 path에서 헤더 파일을 검색합니다.

screen + vim + ctags 좋아요~

김충길의 이미지

이 기능 정말 편하죠. 특히 변수명, 함수명 틀려서 생기는 syntax 에러를 피하는데 최고가 아닌가 생각됩니다.

이거에 익숙하다 보면 다른 에디터 쓰기 정말 피곤해지죠 ;-)
특히 자바 개발자라면 그 긴 변수명 클래스명을 다 입력한다면.. 정말
피곤할듯 합니다. :-)

yui wrote:
vim를 씁니다.
ctrl+p, ctrl+n으로 자동완성 기능을 사용해서 멤버 이름을 채웁니다.
좀 무식한가요? -_-;

screen + vim + ctags 좋아요~

낙엽의 이미지

gLitCh1diX2 wrote:
그러기 위해서, 코딩시에 뭔가 코더를 편하게 해주는 갖가지 기능들은(ctags
포함) 오히려 개발자의 개발능력을 저하시키는 안좋은 것이라고 생각하십니다.

글쎄요.. 제 생각에는 게으름이 개발자 최고의 덕목이 아닐까 합니다만 ;-)

ed.netdiver의 이미지

그 말 한 사람이 누구였죠? 래리 월이던가요?^^;
laziness, impatience, hubris....
하지만 겪어보니, lazy할수 있다는게 얼마나 어려운지 모르겠더군요.
거기다 대개의 경우 게으르기 위한 노력들을 참고 살게 되구요.
더 훌륭하신 분들이 많다보니, 늘 궁상떨고 살게 되고 말이죠^^;

반복작업같은걸 참지 못하는 게으른 성격을 유지하기 위해서
알고 있어야 하는 수많은 것들이 있는데, 그것들을 다 알고 나면 오만해질수 있을라나요^^;
마치 binary를 hex text를 convert하고는 그걸 array로 잡아주는
작업을 script로 한방에 해결보고 싶지만, 그걸 알아보는게 귀찮고, 시간없어
(결국 원래 알고 있었다면 다 될것이지만, 그런 능력이 안된다는 뜻이겠죠^^;)
걍 column edit mode로 쇼부보는 것처럼 말이죠.
그래서 늘 단순 코더인가 봅니다^^;

그럼 날마다 좋은 하루하루 되세요^^;

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

cinsk의 이미지

ysch0i의 이미지

김충길 wrote:

[ I 기능도 멎집니다. 이걸로 목록을 보고 [ tab 혹은 숫자 [ tab 눌러
참조한뒤 돌아올때 ctlr+o 를 사용합니다.

[I는 잘되는데, 그리로 가는게 안됩니다.

[이든 숫자먼저 치든간데...

구글에게 물어보려구 해도

[I 이걸 도무지 어째 검색해야 하는지 모르겠군요. 따옴표로 묶어도 안되고 ㅠ.ㅠ

서명없어요.

정태영의 이미지

이클립스 CDT를..
...

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

kida의 이미지

안녕하세요.. 유령 키다군 입니다..^^;

http://www.vim.org 의 scripts 페이지에서 rating 짱먹고 있는 taglist 라는것도 있습니다.
써보지는 않았지만 스샷을 보면 상당히 유용할 듯 하네요..

http://www.geocities.com/yegappan/taglist/index.html

안경 미소녀가 좋아~!

김충길의 이미지

vim 상에서

Quote:

:help [

ysch0i wrote:
ote="ysch0i"]
김충길 wrote:

[ I 기능도 멎집니다. 이걸로 목록을 보고 [ tab 혹은 숫자 [ tab 눌러
참조한뒤 돌아올때 ctlr+o 를 사용합니다.

[I는 잘되는데, 그리로 가는게 안됩니다.

[이든 숫자먼저 치든간데...

구글에게 물어보려구 해도

[I 이걸 도무지 어째 검색해야 하는지 모르겠군요. 따옴표로 묶어도 안되고 ㅠ.ㅠ

screen + vim + ctags 좋아요~

ㅡ,.ㅡ;;의 이미지

여테 그런것때문에 고민해본적이 별로 없는데..
대부분 쓸대 기억이 납니다.

단체로 사용할때는 붙여넣기로 하고 개별적사용은 손으로 치죠..
변수명은 적당히 짧게 정합니다. (타이핑이 쉽게, 기억하기 쉽게, 2~6, DB 에 상요할변수는 컬럼명과동일하게)
변수명을 다른구조체 맴버에서 사용하던 비슷한게 있으면 똑같이 사용합니다.
(맨날 같은 변수가 나오니까 안봐도 안다)
항상 일관된 네이밍을 한다. ( 역시 안봐도 기억나게 한다)


----------------------------------------------------------------------------