C/C++ 프로그래밍에 있어서 로컬 파일 내에서만 쓰는 함수의 경우 static 키워드를 써주는 것이 안전하고 좋은 프로그래밍 습관 아닌가요?
어떤 사람들은 static 키워드를 아예 안쓰는 사람들이 있는데 그게 무슨 이유가 있나요?
또는 아는데도 별로 중요하지 않다고 생각해서 입니다. 저같은 경우 내부에서 쓰는 함수는 Class의 private 메쏘드 만들듯 꼭 static을 붙이는 편이지만 뭐 굳이 강요 할 필요는 없다고 생각합니다.
비슷한 질문으로
절대 안변하는 변수에 const 붙이기를 귀찮아 하지 않나요?
라던가,
casting 을 하는데 dynamic cast 를 안쓰고 전부 static 만 써요
unsigned 랑 singed 를 비교하는데 따로 casting 을 안해요
라던가....
여러가지가 있습니다만, 다들 귀찮아서 안하는거죠 ( 먼산 )
Neogeo - Future is Now.
귀찮아서 안하는 거 인정은 하는데요...
문제는
로컬 파일에서만 쓰는 전역변수와 로컬 파일에서만 쓰는 함수의 이름이 지나치게 짧아서
좀 위험해 보여서 그렇거든요.
그리고 static으로 써놓으면 파일 내에서 참조하는 함수가 없다면 컴파일러가 삭제해주니까 더 낫지 않을까 싶기도 하구요.
싫다는 사람에게 억지로 강요하고 싶은 생각은 없습니다.
다만, static 키워드를 붙여주는 것이 더 좋은거 아닌가 알고 싶어서 여쭤봤습니다.
붙여주는게 좋습니다.
특히나 유닉스 계열에서는 기본적으로 export가 되어버리니,
다른 라이브러리랑 쓸때 이름 충돌하는 문제도 생기고...
static을 안 붙일거면 내부 함수 이름 가리는 다른 방법을 사용하던가...
모르는 사람이 귀찮아서 안 쓰는 사람보다 많은 것 같더군요. 그렇게 쓴 분한테 여쭤보세요. 아냐고... extern을 몰라서 헤매고 있는 걸 본 적도 있습니다.
static 키워드를 붙여주는게 좋은 습관이죠.. 물론 당근, 전역변수는 최대한 안쓰는게 좋지만 쓰는 경우에도 static 같은 걸 붙여서 숨겨놓는게 안전하다고 생각합니다. 최근에 제가 C++에서는 어떤가 하는 걸 블로그로 보고 사용해 본 것은 이름없는 네임스페이스를 만드는 것이었습니다. c 에서 static 키워드의 역할을 c++ 에서는 무명의 이름공간으로 처리할 수 있어서 더 깔끔합니다.
텍스트 포맷에 대한 자세한 정보
<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]
잘 몰라서요...
또는 아는데도 별로 중요하지 않다고 생각해서 입니다. 저같은 경우 내부에서 쓰는 함수는 Class의 private 메쏘드 만들듯 꼭 static을 붙이는 편이지만 뭐 굳이 강요 할 필요는 없다고 생각합니다.
비슷한 질문으로
비슷한 질문으로
절대 안변하는 변수에 const 붙이기를 귀찮아 하지 않나요?
라던가,
casting 을 하는데 dynamic cast 를 안쓰고 전부 static 만 써요
라던가,
unsigned 랑 singed 를 비교하는데 따로 casting 을 안해요
라던가....
여러가지가 있습니다만, 다들 귀찮아서 안하는거죠 ( 먼산 )
Neogeo - Future is Now.
Neogeo - Future is Now.
질문 올린 사람입니다
귀찮아서 안하는 거 인정은 하는데요...
문제는
로컬 파일에서만 쓰는 전역변수와
로컬 파일에서만 쓰는 함수의 이름이 지나치게 짧아서
좀 위험해 보여서 그렇거든요.
그리고 static으로 써놓으면 파일 내에서 참조하는 함수가 없다면 컴파일러가 삭제해주니까 더 낫지 않을까 싶기도 하구요.
싫다는 사람에게 억지로 강요하고 싶은 생각은 없습니다.
다만, static 키워드를 붙여주는 것이 더 좋은거 아닌가 알고 싶어서 여쭤봤습니다.
제 경험상으로는...
붙여주는게 좋습니다.
특히나 유닉스 계열에서는 기본적으로 export가 되어버리니,
다른 라이브러리랑 쓸때 이름 충돌하는 문제도 생기고...
static을 안 붙일거면 내부 함수 이름 가리는 다른 방법을 사용하던가...
제가 만나본 사람들은
모르는 사람이 귀찮아서 안 쓰는 사람보다 많은 것 같더군요. 그렇게 쓴 분한테 여쭤보세요. 아냐고...
extern을 몰라서 헤매고 있는 걸 본 적도 있습니다.
static 키워드를 붙여주는게 좋은 습관
static 키워드를 붙여주는게 좋은 습관이죠..
물론 당근,
전역변수는 최대한 안쓰는게 좋지만 쓰는 경우에도 static 같은 걸 붙여서 숨겨놓는게 안전하다고 생각합니다.
최근에 제가 C++에서는 어떤가 하는 걸 블로그로 보고 사용해 본 것은 이름없는 네임스페이스를 만드는 것이었습니다.
c 에서 static 키워드의 역할을 c++ 에서는 무명의 이름공간으로 처리할 수 있어서 더 깔끔합니다.
댓글 달기