juhongkim2   3년 전

a.cpp 소스파일에 선언된 static변수와 extern함수,

b.cpp 소스파일에 선언된 함수를 이용해서

알고리즘 문제를 풀어야하는데...


a에 선언된 static변수를 어떻게 b로 받아와서

어떻게 b에서 변한 값을 다시 a로 출력시킬수 있나요???


예를 들자면 최대값을 구해야 하는데

최대값을 저장할 변수 max를 a에 static으로 선언해놓고

b에서 함수를 이용해 최대값을 구한다음 a에서 출력해줘야 합니다...


여태 그냥 한 소스파일에서만 문제를 풀고 했는데

이런 경우는 처음이라 많이 당황했네요...


어떻게 공부하면 좋을지 조언부탁드립니다

djm03178   3년 전

a.cpp에
static int max;
이렇게 선언되어 있고, b.cpp에
int getMax(void) { ... return result; } 이런 함수가 있다면,

a.cpp에
extern int getMax(void);
max = getMax();
std::cout >> max >> endl;

이렇게 해주면 됩니다.

juhongkim2   3년 전

그런데 a에는 손을 못대는 상황이면 어떻게 해야하죠...?

djm03178   3년 전

무슨 뜻인가요? a.cpp의 내용을 수정할 수 없다는 건가요?

juhongkim2   3년 전

네... a.cpp는 손을 못대는 상황입니다...

djm03178   3년 전

그럼 a.cpp 에서 b.cpp에 있는 이 함수를 호출하는 부분이 있겠죠. 그 부분을 보여주시지 않으면 어떻게 해야 할지 저도 알 수 없습니다. 당연히 b.cpp가 a.cpp에 있는 max를 직접은 못 건드리고요, 위에 써드린 것처럼 리턴값을 이용해서 a.cpp에 있는 함수가 처리를 해줘야 됩니다.

juhongkim2   3년 전

a에서 b에있는 함수를 참조하는 부분이 있다면 위에 댓글 달아주신 것 차럼 처리할수 있는건가요?

djm03178   3년 전

네 사실 뭐가 걸리시는 건지 잘 모르겠습니다. 소스 코드 하나로 되어있을 때와의 유일한 차이는 b.cpp가 max를 직접 참조하지 못하는 것 뿐이니까 b.cpp에서는 값을 계산하고, max의 값을 실제로 변경하는 건 a.cpp에서 하는 거라는 차이밖엔 없으니까요.

juhongkim2   3년 전

감사합니다

혹시 이렇게 여러개 소스파일로 프로젝트식으로 코딩하는법 공부할만한 책이나 사이트 추천해주실수 있나요?

댓글을 작성하려면 로그인해야 합니다.