c언어 코딩을 할때 주석은 어떻게 표기를 해야하나요...

imone의 이미지

c언어로 코딩을 할때 다음과 같은 고민을 하게 됩니다.

1:   /* comment1 */ 
2:   statement1; 
3:   statement2; 
4:   statement3; 
5: 
6:   /* comment2 */ 
7:   statement4; 
8:   if(aaa) {
9:      func1();   /* function 1 */ 
10:      func2();   /* function 2 */ 
11: }
12:   statement5; 

이런식의 코드가 있다고 가정을 할 때 디버깅을 하다 보면
간단한 확인을 위해 Line1 ~ Line11까지 주석처리를 해보고 실행을 해야 하는 상황이 생깁니다.
그 경우 Line1과 Line11 전체에 /* */ 주석처리를 해주면 컴파일이 syntax error가 생기게 되는데요.
그렇다고 중간중간에 */를 넣어줄수도 없는 노릇이고.. #ifdef를 쓸수도 없는거고...

그래서 제 경우는 아예 주석을 //로 사용했었는데 ansi-c가 아닌만큼
찝찝한 마음은 있더군요..

저는 코딩 경험이 얼마 없어 이런 상황에서는 어떻게 주석을 달아야 할지 모르겠습니다.
경험 많으신분들의 조언을 부탁드립니다.

체스맨의 이미지

#ifdef 가 무난할텐데요?
대개 다음 정도로 할 겁니다.

#if 0

/* meaningless codes */

#endif

Orion Project : http://orionids.org

imone의 이미지

왜 그 생각을...

#define A
#ifdef A
    /* code */
#endif
이렇게 해서 #define A를 넣었다 빼었다 하는 생각만 하고 있었다는..
ㅜㅜ..

머리가 나쁘면 평생고생이군요.
감사합니다.

--
앞으로는 /* */를 애용한다는... ^^

eungkyu의 이미지

imone wrote:
그래서 제 경우는 아예 주석을 //로 사용했었는데 ansi-c가 아닌만큼
찝찝한 마음은 있더군요..

새로운 C 표준에서는(C99)에서는 //도 올바른 주석입니다 :)
물론 질문하신 경우에는 #if 0 ... #endif 가 편하겠지만, 앞으로는 //도 과감히 애용해주세요.

죠커의 이미지

아예 while(0) 블록이나 if(0) 블록은 어떨까요?

fliers의 이미지

CN wrote:
아예 while(0) 블록이나 if(0) 블록은 어떨까요?

크게 차이는 나지 않겠지만 while 이나 if 는 명령어를 사용하는 것이기 때문에
미약하지만 실행시간이 있을 것 같고, 최적화에서 걸러지는지는 모르겠는데 안걸러진다면 코드들이 모두 컴파일될것 같네요.

preprocessor로 처리해주는게 좋을 것 같네요. 블록으로 { } 를 구분해 놓는것도 금방 알아보기 힘드니깐요..
전 그냥 // 쓰는게 습관이라 ㅋㅋ

saxboy의 이미지

mozilla 의 portability 가이드라인에서는 #if 0 를 추천하고 있습니다.

http://www.mozilla.org/hacking/portable-cpp.html#block_out_with_if_0

꼭 이것이 아니더라도 이 문서는 죽 한번 훑어보면 크로스플랫폼 코드 작성에 대해서 참고할만한 내용이 많습니다.

M.W.Park의 이미지

체스맨 wrote:
#ifdef 가 무난할텐데요?
대개 다음 정도로 할 겁니다.

#if 0

/* meaningless codes */

#endif

체스맨님의 의견에 한표를 던지면서...
위의 코드같은 경우 0을 1로 바꾸면서 넣었다 뺐다 하는 거고...
덧붙여서 두개의 코드를 번갈아 테스트해야할 경우는
#if 0

/* excluded */

#else

/* included */

#endif

에서 0, 1 을 번갈아 하면 두개의 코드를 테스트 할 때 편하죠.

3개 이상은 다음과 같이....

#define FLAG 2

#if FLAG == 0
  printf("FLAG is 0");
#endif
#if FLAG == 1
  printf("FLAG is 1");
#endif
#if FLAG == 2
  printf("FLAG is 2");
#endif

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.