C++ 을 하다보면 절대(순수?) 가상함수를 사용하게 되는 경우가 많다.
그런데 절대 가상함수를 상위에 선언은 해놓고 하위에서는 사용하지 않게 되는 인자가 생길 수 있는데, 이 때 컴파일러에서 뿌려주는 warning을 어떻게 처리해야 될까?

먼저 Visual C++에서는 #pragma warning를 통해 처리할 수 있다. (C4100이 사용되지 않은 인자 warning)


#pragma warning(disable:4100)
// warning 생기는 코드
#pragma warning(default:4100)

이것은 상당히 괜찮은 방법이다. 적어도 Visual C++에서 만큼은 이 warning이 생기지 않도록 해준다.
이건 많은 사람들이 잘 알고 있는 방법이고, 검색해도 이것이 주로 나온다.

그런데 구글 C++ 코딩 스타일 가이드를 보니 이 절대 가상함수 인자에 대해 나온 부분이 있었는데, 내가 왜 이런걸 몰랐나 싶은 생각이 들었다 ㅋㅋ

음... 내가 잘못봤나...?
지금 찾아보니까 또 안 보이네... 다른데서 봤나?

여튼 그 내용은 이랬다.(이랬던것 같다... ㅡㅡ;)


"절대 가상함수를 구현한 함수에서 해당 인자가 사용되지 않을 경우 변수 이름을 쓰지 않는다."

변수 이름을 쓰지 않는 이유는 첫째로 떠오르는 게 함수에서 참조되지 않는다는 것을 명시적으로 표현하는 것이다. 인자의 이름이 없으니 쓸 수가 없지!

그리고 확실하지 않은 두번째 이유는 바로 warning!

난 저런 경우에 warning 잡기 위한 노가다를 많이 해봐서 그런지 딱 보니 이게 제일 궁금했다.

"변수 이름이 없으면 warning을 어떻게 출력하지? 출력 안하지 않을까? 구글도 그런것을 고려해서 결정한 내용이 아닐까?"

훗~ 역시 해보니 warning이 뜨지 않는다.

물론 컴파일러마다 다를수도 있겠지만, 적어도 #pragma보다는 더 범용적이고 라인낭비를 줄이는 일일테지.

하나 배웠다.

+ Recent posts