vc++ warning C4541 'typeid' used on polymorphic type with GR-
在vc2008编译器下使用c++ typeid操作符时,提示如下警告,并在运行时崩溃。
warning C4541: 'typeid' used on polymorphic type 'XXX' with /GR-; unpredictable behavior may result.
在vc++编译器中,“/GR”选项的作用如下:
When /GR is on, the compiler defines the _CPPRTTI preprocessor macro./GR- disables run-time type information.
Use /GR if your code uses dynamic_cast Operator or typeid. /GR does, however, cause the .rdata sections of your image to increase in size. If your code does not use dynamic_cast or typeid, using /GR- may produce a smaller image.
而vc2008编译器的默认设置是“/GR-”,禁用了c++ RTTI。所以要把手动将设置改为“/GR”。方法是:
1. Open the project's Property Pages dialog box.
2. Click the C/C++ folder.
3. Click the Language property page.
4. Modify the Enable Run-Time Type Info property.