programing

RTTI없이 C ++를 컴파일하면 언제 문제가 발생할 수 있습니까?

nicescript 2021. 1. 16. 09:18
반응형

RTTI없이 C ++를 컴파일하면 언제 문제가 발생할 수 있습니까?


-fno-rtti런타임 유형 정보없이 내 C ++를 컴파일하기 위해 gcc의 플래그를 사용하고 있습니다.

dynamic_cast<>또는을 사용하지 않는다고 가정하면 typeid()나중에 문제를 일으킬 수있는 것이 있습니까?


귀하의 질문은 GCC에만 해당되므로 사용중인 버전에 대한 문서를주의 깊게 참조해야합니다. GCC 4.5.2에 대한 문서는 다음과 같습니다. 내 독서에서 dynamic_cast 및 typeid를 피하면 괜찮을 것임을 나타냅니다. 즉, -fno-rtti에 대한 개인적인 경험이 없습니다. -fno-rtti를 사용하는 이유를 자세히 설명하고 싶을 것입니다.

-fno-rtti
C ++ 런타임 유형 식별 기능 ( dynamic_casttypeid) 에서 사용할 가상 함수가있는 모든 클래스에 대한 정보 생성을 비활성화합니다 . 언어의 해당 부분을 사용하지 않는 경우이 플래그를 사용하여 공간을 절약 할 수 있습니다. 예외 처리는 동일한 정보를 사용하지만 필요에 따라 생성합니다. dynamic_cast연산자는 런타임 유형 정보가 필요하지 않은 캐스트, 즉 void *모호하지 않은 기본 클래스 로의 캐스트에 계속 사용할 수 있습니다 .

RTTI가 없지만 여전히 가상 방법 에서 사용할 수있는 가상 기능과 RTTI 간의 관계에 대한 논의가 있습니다 . 짧은 버전은 가상 기능이 RTTI 없이도 괜찮아 야한다는 것입니다.


우리는 특정 문제없이 5 년 동안 rtti없이 gcc를 사용했습니다 (dynamic_cast 또는 typeid를 사용하지 않음).

참조 URL : https://stackoverflow.com/questions/4486609/when-can-compiling-c-without-rtti-cause-problems

반응형