如果我在C++中有多個鏈接的C++靜態鏈接庫,如果它們使用不同的啓用/禁用運行時間值進行編譯,是否可以共享(傳入和傳出函數)類對象類型信息(RTTI)?在C++中混合使用RTTI標誌
- 編輯: 感謝您的回覆,我擔心的具體事情是 1.是否啓用RTTI更改靜態(非多態類型)的sizeof行爲?
and 2.如果我在支持RTTI的庫中創建類並將其傳遞給另一個不支持RTTI的庫,那麼虛擬方法是否正常工作。 (反之亦然)
and lastly 3.如果我在支持RTTI的庫中創建類,我希望能夠使用dynamic_cast,如果我將該對象傳遞給啓用了非RTTI的庫,可以我仍然使用那的對象。 ......我不會假設,反正這似乎是一個壞主意......我只是好奇。
這裏沒有其他人想到的優秀點,特別是有關填充的問題取決於編譯器設置。 – Elemental 2009-09-29 16:00:33
@Loki Astari:是否暗示如果我使用.so或.dll中的對象(禁用RTTI進行編譯),我將無法使用dynamic_cast,也不能爲該對象使用typeid。或者更糟糕的是,ABI不正確,所以程序不兼容(可能是崩潰等)。 – 2012-09-12 00:07:55
@ Shao-ChuanWang:潛在的。這一切都取決於你的編譯器。爲了安全起見,所有對象必須使用完全相同的標誌進行編譯。 – 2012-09-12 00:30:57