c - 들여쓰기에 관하여
글쓴이: 버려진 / 작성시간: 수, 2003/02/19 - 6:34오후
뭐 답이 없는 문제겠습니다만 그래도 고수분들의 고견을 듣고 싶습니다 :)
{}의 위치 문제인데요.. 윈도 플밍할때는 몰랐는데 리눅스로 오면서 c스타일의 코드들을 많이 접하다 보니
if(...){
...
}
이런식의 들여쓰기가 많더군요. 저는
if(...)
{
...
}
이렇게 써왔거든요. 왠지 일관성에 문제가 있어 보여서 위에것은 지양했거든요? 함수도
void Func(){
...
}
이러면 이상하니까 +_+;; 그런데 do...while문일때는 조금 달라 보이더군요
do
{
...
}while(...)
이러면 왠지 do가 허전해보이고, while도 } 와 같은 줄에 써야 할지 다음 줄에 써야 할지 +_+; 문제가 생기더군요. 일관성을 적용해서
do{
...
}while(...)
이렇게 쓴다면 마찬가지로 if문도
if(...){
...
}
이렇게 써야 할테고. :P
그리고 함수를 쓸때요
int main()
이것과
int
main()
이것. 후자를 쓰는건 이해가 잘 안됩니다 +_+; 마찬가지로 일관성을 적용하면 헤더파일은.. 꽤나 산만하게 되고 +_+
들여쓰기에 관한 고견 부탁드립니다.
Forums:
저도 옛날에 이것때문에 고민을 마니 했었는데...
GNU쪽 문서중에 ...
코딩 스타일에 관해 정의 해논게 있습니다..
오픈소스도 프로젝트 별로 스타일이 다른게 현실이니..
GNU Programming .... 였었는데.. 프린트 해서 열심히 봤었지요.
검색해보시면 쉽게 ㅤㅊㅏㄺ으실수 있으니 참고해보세요..
저 같은 경우에는...
함수는 다음줄에 조건문이나 루프문은 같은 줄에 시작합니다.
int func()
{
int i;
for (i = 0; i < 10; i++) {
printf("%s\n", i);
}
return 0;
}
그리고 함수 리턴 타입을 줄로 분리하는 스타일은...
엑스 윈도 프로그래밍이나 GTK + 쪽에서 많이 사용되는 걸로 알고 있습니다.
C로 하는 gui 코드들이 보면...
리턴 타입니이나 인수들들의 타입이나 변수명들이 대체로 기니깐..
this_is_very_long_return_type_name *
func(long_argument_name *pointer,
second_long_arg name,
int number)
{
this_is_very_long_return_type_name *nice_ptr;
return ptr;
}
뭐 대충 이런씩의 코드들이죠..
이름들이 길어지니깐 , 위의 스타일로 정리를 하하는것이
더 깔끔하게 보이더군요 이해하기도 쉽고..
계속 코딩하다보면 마음에 드는 스타일이 생기겠죠...
http://www.gnu.org/prep/standards_toc.html
http://www.gnu.org/prep/standards_toc.html
GNU Coding Standards라는게 있었군요 :lol:
gnu홈페이지는 오픈소스 프로젝트들을 찾는데밖에 이용 안하다 보니 - -;;
대충 훑어봤는데 들여쓰기쪽은 별로 마음에 안드네요 :cry:
그래도 따라야지 gnu만세 :D
Jargon file의 관련 글: http://jargon.watso
Jargon file의 관련 글:
http://jargon.watson-net.com/jargon.asp?w=indent+style
일관성만 지킨다면야...
개인적인 질문이지만..
주제와는 벗어나는듯 싶지만 질문드립니다-_-
지금 어떤 책을 보고있는데요 예제를 보면..
int main()인데..
함수 내부에 return 이 없네요..
int 를 return 하지 않아도 되나요? VC++에서 연습할땐 에러던데
다른 컴파일러에선 문제가 없는건지..
책이 잘못된걸까요?
책은.. Thinking in C++ 입니다
컴파일시에 -wall로 경고메시지를 전부 켜주면 뭐라고 할 겁니다.
컴파일시에 -wall로 경고메시지를 전부 켜주면 뭐라고 할 겁니다.
일단 C에서는 C++보다 타입체킹을 느슨하게 합니다.
main 같은 함수는 리턴 안해도 그냥 컴파일 되지요. 그냥 return; 해도 컴파일 되구요.
여담이지만 그래서 컴파일시 -wall로 해주는 것이 좋습니다.
요즘 자꾸 제 얘기만 하게 되는데.. --
예전에 프로그램이 몇시간에 한번씩 자꾸 죽는 것을 블랙박스 테스트로 잡은 적이 있는데..
소스코드도 없는 것을 objdump로 주소 찾아가며 따라간 결과..
짜신 분이
return 0;
해야 할 것을
return;
해서 세그먼트 폴트가 난 것이더군요.
그래도 컴파일러는 아무 말 없다더라는... 컴파일 옵션이 -wall이 켜있었는지는 모르겠습니다만..
저거 잡느라 한달인가 걸렸습니다. 왠만하면 저 옵션 켜고 컴파일 하시길..
rommance.net
Re: 개인적인 질문이지만..
혹시 return(0); 라는 문장이 main 함수내에 없던가요?
int main() 하고 선언하는게 정석입니다. 이게 ANSI 표준이죠.
위엣분 말씀대로 -Wall 옵션주고 컴파일하면 걸립니다.
항상 경고 옵션은 최고로 하시고 코딩하는 습관을 기르시면 좋을 듯 합니다.
Re: 개인적인 질문이지만..
main함수라는 특수한 경우에 한해 만약 return문이 없으면
return 0;이 있는 것으로 여긴다는 내용이 C++표준에 있는 것으로 알고 있습니다.
C에선 main에서 return을 해줘야 하지만 ANSI/ISO C++에
C에선 main에서 return을 해줘야 하지만 ANSI/ISO C++에선 따로 return을 안해줄 경우 자동으로 return 0; 으로 처리되게 됩니다.
[code:1]intfoo(type a, type b
함수는 다음줄로 하는 사람이 많던데요. if나 loop를 붙여서 쓰더라도...
반환형을 줄바꿔서 쓰는 것은 에디터에서 편의를 위해서 쓰는 사람이 많을겁니다. 함수 찾는게 빠르니깐요.
- 죠커's blog / HanIRC:#CN
댓글 달기