이 키워드를 쓰고 안쓰고 결정적으로 차이가 나는 코드의 경우에 대해서 좀 설
명해주시면 감사하겠습니다~~~
그냥, 함수나 블럭에 영향을 받지않고 다만, 그 함수나 블럭안에서 다시 재정
의가 되면 덮어씌워진다고는하는데,
이런 키워드가 언제 꼭 필요한지 잘 감이 안잡히네요.ㅡ.ㅡ
파일 A, B 가 있습니다
A 안에 x 라는 구조체가 정의되어 있지요. B 안에서 A.x를 불러와서 쓰고싶다면?
B안에서 x 를 재정의 해줘야할까요? 그러면 컴파일러가 싫어 할꺼에요..
이럴때 extern 을 사용 하지요.. 한마디로...
파일간 변수공유라고나 할까요? 좀더 기술적인 내용은 구글신또는 다른분들께.. :wink:
하나의 헤더 파일을 만들고 그 헤더 파일을 여러 곳에서 include 하는 경우 만약 그 헤더 파일에 변수 또는 함수의 정의가 되어 있다면,
그 경우에는 해당 변수 또는 함수 정의가 헤더 파일을 include 하는 소스 파일에서 중복해서 정의 됩니다.
따라서, 링크 과정에서 오류 메시지를 뿜어내며 컴파일이 안되게 됩니다.
결국 여러 곳에서 사용해야 하는 변수와 함수의 정의는 특정 소스 파일(*.c)에 해두고 헤더파일에는 extern 으로 선언만 해주게 됩니다.
이렇게 되면 해당 헤더파일을 여러 파일에서 include 해도 링크에러가 발생하지 않습니다.
Be Creative For Fun!!
답변 감사합니다.
텍스트 포맷에 대한 자세한 정보
<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]
파일 A, B 가 있습니다A 안에 x 라는 구조체가 정의되어 있지
파일 A, B 가 있습니다
A 안에 x 라는 구조체가 정의되어 있지요.
B 안에서 A.x를 불러와서 쓰고싶다면?
B안에서 x 를 재정의 해줘야할까요?
그러면 컴파일러가 싫어 할꺼에요..
이럴때 extern 을 사용 하지요..
한마디로...
파일간 변수공유라고나 할까요?
좀더 기술적인 내용은 구글신또는 다른분들께.. :wink:
제 경우 입니다.
하나의 헤더 파일을 만들고 그 헤더 파일을 여러 곳에서 include 하는 경우
만약 그 헤더 파일에 변수 또는 함수의 정의가 되어 있다면,
그 경우에는 해당 변수 또는 함수 정의가 헤더 파일을 include 하는
소스 파일에서 중복해서 정의 됩니다.
따라서, 링크 과정에서 오류 메시지를 뿜어내며 컴파일이 안되게 됩니다.
결국 여러 곳에서 사용해야 하는 변수와 함수의 정의는 특정 소스 파일(*.c)에
해두고 헤더파일에는 extern 으로 선언만 해주게 됩니다.
이렇게 되면 해당 헤더파일을 여러 파일에서 include 해도 링크에러가 발생하지
않습니다.
Be Creative For Fun!!
(^^)(_ _)
답변 감사합니다.
댓글 달기