- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hello,
I am trying to implement abstract classes using gnupro C++ for nios and cyclone. Comparing the results using inheritance - and doing wrong - and the virtual keyword - and doing right - in the same code, the code which uses virtual keyword is 15 times bigger. Does anyone have done something optimized using abstract classes in Nios? Thanks, Flavio링크가 복사됨
1 응답
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
I assume by "abstract classes" you mean classes with pure virtual methods (e.g. virtual int foo() = 0).
If you are linking with libstdc++, it could be that a large chunk of exception handling code is being included (I've found operator new & delete particularly bad for this and always override them). Have a look at your linker map (if you're not generating one, add "-Map <filename>" to your linker flags) for any evidence of this. Compiler options "-fno-exceptions" and "-fno-rtti" help greatly in keeping EC++ code size down (assuming you're not actually using exceptions and run-time type info!). The code for virtual classes will be bigger due their vtables etc, but not by a factor of 15 (unless the non-virtual ones were very small and numerous). If your classes really are abstract, try stubbing out the "__cxa_pure_virtual()" function as follows: extern "C" void __cxa_pure_virtual() { } Steve.