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.

你可能感兴趣的:(vc++ warning C4541 'typeid' used on polymorphic type with GR-)