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_cast
및typeid
) 에서 사용할 가상 함수가있는 모든 클래스에 대한 정보 생성을 비활성화합니다 . 언어의 해당 부분을 사용하지 않는 경우이 플래그를 사용하여 공간을 절약 할 수 있습니다. 예외 처리는 동일한 정보를 사용하지만 필요에 따라 생성합니다. 이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
'programing' 카테고리의 다른 글
ViewModel에서 LiveData 관찰 (0) | 2021.01.16 |
---|---|
Windows에서 ncurses를 사용할 수 있습니까? (0) | 2021.01.16 |
앱 종료시 NSHTTPCookieStorage 상태가 저장되지 않습니다. (0) | 2021.01.16 |
java.lang 네이티브 메서드에 대한 소스 코드는 어디에서 찾을 수 있습니까? (0) | 2021.01.16 |
Mac OS X에서 가장 좋아하는 디스어셈블러 도구는 무엇입니까? (0) | 2021.01.16 |