• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

static과 include 질문 드립니다!

21.03.04 22:35 작성 조회수 122

1

	printf("\n");
	printf("main()\n");
	printf("Static function address %p\n", multiply);
	printf("Static variable address %p\n", &si);			

	printf("\n");
	print_address();	// my_functions.c

강의 중의 코드입니다!!

my_functions.h 에서  static으로 정의된 si와 multiply를,

 main.c / my_functions.c 에서 각각

#include "my_functions.h" 해줌으로서 

include는 단순한 코드 복사니까,

두 파일에서는 각각의 file scope로 새로운 si와 multiply 를 가지게 된다고 이해했는데요!

1. 위의 이해가 맞는지,
2. 그렇다면 si / multiply는 총 3개가 존재하고 원본인 my_function.h 의 si / multiply가 따로 존재하는건지

질문 드립니다!! 헤더 파일 내에서 변수의 주소를 확인해보려고 했는데 링킹 문제를 해결하기가 어렵네요 ㅠㅠ

답변 1

답변을 작성해보세요.

3

안소님의 프로필

안소

2021.03.06

1. 네 맞습니다. 

2. 총 2개입니다. 헤더파일의 si 는 그저 각각의 c 파일에 복사될 뿐이니까요! 헤더파일로부터 복사되어 메모리상 존재하게 된 main.c 에서의 si 와 my_funcions.c 에서의 si는 별개입니다. 헤더파일 내용은 그냥 복사되는 존재지 메모리를 차지하고 실행되는 존재는 아니니 이렇게 2개라고 말씀드리겠습니다.