그 클래스 안에서 사용되지 않는 private
메서드는 컴파일러/링커에 의해 제거되어 최종 이진 파일에 포함되지 않을 것이라고 생각했습니다.최종 바이너리에서 사용되지 않는 메소드를 제외하는 방법은 무엇입니까?
구현되었지만 사용되지 않는 개인 메서드로 예제 클래스를 만들었습니다.
class XXX
{
public:
XXX();
private:
void MyUnusedMethod();
};
및 구현 파일에
:void XXX::MyUnusedMethod()
{
const char* hugo = "ABCCHARLYABC";
printf(hugo);
}
컴파일 후 문자열은 여전히 최종 바이너리에 존재합니다. 왜? 어떻게 이것을 막을 수 있습니까?
안부, CHARLY
왜 그 방법을'#if 0 ... #endif' 블록에 넣을 수 없습니까? – iammilind
gcc의 최적화 플래그를 조정 해 보셨습니까? – slaphappy
'-O3' 플래그를 사용한다면 아무런 차이가 없습니다. 물론 - 내가 더 이상 사용하지 않을 것이라는 것을 안다면 나는 그것을 제거하기에는 너무 게을 리지 않습니다. 그러나 일반적인 질문이기도합니다 : 왜 컴파일러/링커에 의해 삭제되지 않습니까? – Charly