본문 바로가기

ns3

[ns3] extern 변수 선언의 편리성과 그에 따른 고민

실험하다보면 정말 매우 많은 파일의 함수 참조가 이뤄진다.

ns3 기본 제공 모듈만 사용한 간단한 실험을 진행할 때에는 새로운 application이나 기타 기능을 생성할 필요가 없이

main내에서 적당히 파라미터를 바꾸면 되는데,

 

이번 실험은 규모가 크다보니 조정해야 할 파라미터가 매우 많았다.

또한 다양한 파일에서 동시적으로 접근해야하는 공용 데이터가 많았다.

- 기지국의 커버리지, node 별 stop and restart time을 랜덤하게 변경, 서버의 커버리지, handover 관련 파라미터 등등등

 

처음에는 각 파일에서 파라미터들을 변수로 사용하지 않고 (레전드 바보짓) 대충 임의의 값을 가지고 작성했지만

이러다보니 나중에 진짜 조작변인들을 변경해가며 실험해야할 때, 커버리지가 옵션에 따라 자동 계산되지 않는 등 문제가 생겼다.

 

따라서 나는 이러한 데이터들을 정의할 때 extern을 사용하는 방식으로 현재 실험을 진행중이다.

 

extern 요소들을 모두 모아둔 헤더 파일 하나 만들어둔 다음, cc파일에서 선언을 끝내둔다.

그 다음 해당 변수나 자료구조 등이 필요한 곳들에 헤더파일 include를 하고 main에서 적당한 초기화를 해준다음 사용한다^^

이렇게 관리하니까 command line에 값 넘겨줘서 실험하기도 매우 편하고 전반적으로 자동화되어서 좋다.

 

다만 extern을 너무 남발하다보면 문제가 생기지는 않을까 걱정되어 찾아봤지만

아직까지는 이렇게 작업하는 경우도 많고 큰 문제는 없는 것 같아서 진행하고있다.