JA(EOGH) Q&A Carroty

c언어 extern 함수 질문 (extern 변수를 하나의 헤더에 모으는 방법)

풀등 2018. 8. 17. 20:21




c언어 extern 함수 질문 (extern 변수를 하나의 헤더에 모으는 방법)|자유 게시판
2018.01.02. 19:28

외부 소스에서 변수를 가져올때 변수명 앞에 extern 을 붙히잖아요

그런데 여러군데 extern 을 쓰다보니 보기도 번잡하고 매번 extern을 붙혀주어야 하기 때문에 뭔가 수고 스러워서

아이디어를 냈습니다.


헤더파일 EXTERNAL.h 를 만들었습니다.(헤더명은 제가 지었습니다)


이전에는 만약 int TEST; 라는 변수가 A 소스에 선언이 되었고 B,C,D 소스에 포함되면 각각

-----------------------

소스A

int TEST;

-----------------------

-----------------------

소스B

extern int TEST;

-----------------------

소스C 

extern int TEST;

-----------------------

소스D

extern int TEST;

-----------------------

이렇게 선언을 해주어야 했습니다.





그런데 지금은

-----------------------

소스A

int TEST;

-----------------------

-----------------------

소스B

#include "EXTERNAL.h  "

-----------------------

소스C 

#include "EXTERNAL.h  "

-----------------------

소스D

#include "EXTERNAL.h  "

-----------------------


모든 소스시작 부분에 #include "EXTERNAL.h  "를 입력하여서

(실제 소스는 20 개 정도 됩니다 20 개소스에 모두  #include "EXTERNAL.h  " 를입력하였습니다)


-----------------------

헤더 EXTERNAL

extern int TEST;

-----------------------

이렇게 해서 한번만 extern 변수를 입력해주었습니다.

extern 변수를 EXTERNAL.h 헤더에 모아놓고보니 26개 정도 됩니다.

각 변수들은 최대 6개의 함수에서 쓰이는 것도있고 1번쓰이는 것도 있고 다양합니다.

또한 에러와 워닝이 안나왔고 동작도 잘되었습니다.(컴파일러는 IAR을 쓰고있고 MCU는 STM32F103을 쓰고 있습니다.)


혹시 이렇게 코딩을 하면 무리가 간다던지 속도가 느려진다던지 심각한 문제가 될확률이 있을까요??



  • 삭제된 댓글입니다.

  • 프로필
    eogh작성자
    2018.01.02. 20:13답글

    신고

    답변감사합니다^^

  • 2018.01.02. 20:02답글

    신고

    저도 저렇게 사용합니다.

  • 프로필
    eogh작성자
    2018.01.02. 20:13답글

    신고

    답변감사합니다^^

  • 2018.01.02. 20:20답글

    신고

    사용상 문제는 없습니다.
    추후 module화를 생각하신다면.. 전역변수 보다는 변수를 set / get할 수 있는 함수를 사용하는 것이 더 좋을 듯 합니다.

  • 프로필
    eogh작성자
    2018.01.02. 20:26답글

    신고

    답변 감사합니다^^

  • 2018.01.02. 20:25답글

    신고

    사용상 문제는 없습니다.
    다만, 점점 파일 갯수가 늘어나고 프로그램이 더 커지게 되면 external.h 헤어파일 하나만 수정을 해도 모든 파일을 새로 다 컴파일해야 하는 상황이 발생하게 됩니다.
    그런 문제가 실제 체감할 정도로 문제가 되지 않는다면 그렇게 사용하셔도 되고, 실제로 많은 분들이 그렇게 사용을 하고 있습니다.
    장점과 단점이 있는데, 장점이 단점을 압도하는 상황이라면 장점을 취하면 되겠습니다. ^^

  • 프로필
    eogh작성자
    2018.01.02. 20:26답글

    신고

    답변감사합니다^^

  • 2018.01.02. 20:52답글

    신고

    굉장히 이상한 질문이군요. 아직 C언어 개념을 잘 이해 못하고 있는 듯합니다. 그냥 그럭저럭 굴러가는 정도의 프로그래밍만 하시는 모양이군요.

  • 2018.01.02. 22:45답글

    신고

    여러군데에서 쓰는거면 define.h 정도에 선언을 하고, include 를 해서 써야하는거 아닌가요 ?
    왜 굳이 extern을 해서 쓰는 이유가 있나요 ?

  • 초임시절 개발부장님으느그렇게 사용하지 말라고 하는데, 개발경력 십 몇년이 지난 시점에서는 그냥 사용합니다
    편한게 장땡이죠