C/C++ 프로그래밍에 있어서 로컬 파일 내에서만 쓰는 함수의 경우 static 키워드를 ...

illos의 이미지

C/C++ 프로그래밍에 있어서 로컬 파일 내에서만 쓰는 함수의 경우
static 키워드를 써주는 것이 안전하고 좋은 프로그래밍 습관 아닌가요?

어떤 사람들은 static 키워드를 아예 안쓰는 사람들이 있는데
그게 무슨 이유가 있나요?

kaeri17의 이미지

또는 아는데도 별로 중요하지 않다고 생각해서 입니다. 저같은 경우 내부에서 쓰는 함수는 Class의 private 메쏘드 만들듯 꼭 static을 붙이는 편이지만 뭐 굳이 강요 할 필요는 없다고 생각합니다.

neogeo의 이미지

비슷한 질문으로

절대 안변하는 변수에 const 붙이기를 귀찮아 하지 않나요?

라던가,

casting 을 하는데 dynamic cast 를 안쓰고 전부 static 만 써요

라던가,

unsigned 랑 singed 를 비교하는데 따로 casting 을 안해요

라던가....

여러가지가 있습니다만, 다들 귀찮아서 안하는거죠 ( 먼산 )

Neogeo - Future is Now.

Neogeo - Future is Now.

illos의 이미지

귀찮아서 안하는 거 인정은 하는데요...

문제는

로컬 파일에서만 쓰는 전역변수와
로컬 파일에서만 쓰는 함수의 이름이 지나치게 짧아서

좀 위험해 보여서 그렇거든요.

그리고 static으로 써놓으면 파일 내에서 참조하는 함수가 없다면 컴파일러가 삭제해주니까 더 낫지 않을까 싶기도 하구요.

싫다는 사람에게 억지로 강요하고 싶은 생각은 없습니다.

다만, static 키워드를 붙여주는 것이 더 좋은거 아닌가 알고 싶어서 여쭤봤습니다.

mg2000의 이미지

붙여주는게 좋습니다.

특히나 유닉스 계열에서는 기본적으로 export가 되어버리니,

다른 라이브러리랑 쓸때 이름 충돌하는 문제도 생기고...

static을 안 붙일거면 내부 함수 이름 가리는 다른 방법을 사용하던가...

winner의 이미지

모르는 사람이 귀찮아서 안 쓰는 사람보다 많은 것 같더군요. 그렇게 쓴 분한테 여쭤보세요. 아냐고...
extern을 몰라서 헤매고 있는 걸 본 적도 있습니다.

jeongheumjo의 이미지

static 키워드를 붙여주는게 좋은 습관이죠..
물론 당근,
전역변수는 최대한 안쓰는게 좋지만 쓰는 경우에도 static 같은 걸 붙여서 숨겨놓는게 안전하다고 생각합니다.
최근에 제가 C++에서는 어떤가 하는 걸 블로그로 보고 사용해 본 것은 이름없는 네임스페이스를 만드는 것이었습니다.
c 에서 static 키워드의 역할을 c++ 에서는 무명의 이름공간으로 처리할 수 있어서 더 깔끔합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.