C ++编译与gcc的恶作剧

时间:2013-03-29 09:57:54

标签: c++ gcc compilation g++

我目前面临一个奇怪的问题,我想找到有关它为何会发生以及如何防止它的文档。

简单来说,我正在使用动态加载的库开发框架,这就是:

void function()
{
  Object* object = new Object();

  call_dynamic_library(object);  
}

// Dynamic library source:
void dynamic_library_callback(Object* object)
{
  // The following would crash:
  object->method();
  // While the following would work:
  object = new Object();
  object->method();
}

指针当然是相同的,没有问题,标题也是。

就我对C编译的了解而言,如果两个二进制文件是使用相同标头的不同版本编译的,那么这并不奇怪。但事实并非如此。

我在使用虚拟纯方法和模板时主要遇到这些问题。 我想了解更多有关可能导致编译器以两种不同方式编译这些对象的内容,即使它基于相同的头文件。

0 个答案:

没有答案