【发布时间】:2010-04-12 02:53:53
【问题描述】:
我的项目使用 2 个不同的 C++ 编译器,g++ 和 nvcc(cuda 编译器)。 我注意到从 nvcc 对象文件抛出的异常没有在 g++ 对象文件中捕获。
C++ 异常在同一台机器上是否应该是二进制兼容的? 什么会导致这种行为?
try { kernel_= new cuda:: Kernel(); }
catch (...) { kernel_= NULL; }
// nvcc object
cuda:: Kernel:: Kernel () {
...
if (! impl_) throw;
}
其他一切似乎都有效(C++ 对象、运算符)。老实说,我不太了解异常,所以上面的代码可能有错误。
【问题讨论】:
标签: c++ exception binary-compatibility