我想用gcc 4.7编译一个c ++应用程序,这个应用程序与一个用gcc 4.4编译的库链接。我只是想知道它是否没有问题?
答案 0 :(得分:0)
答案是:取决于。这不是真正的编译器或系统特定的。例如,它也适用于Visual Studio。
基本上,不应该这样做(这是一个相当典型的场景)。
然而,重要的问题是,在两个二进制文件之间传递了什么类型的数据。
例如,如果所有字符串都以char *
传递,那么一切都很好。一旦你在某处传递std::string
(或只是一个指针或引用),那么在两个文件之间实现更改的情况下(例如,不同的STL实现或只是更改了对齐),事情就会中断。
对于其他事情也是如此,甚至是你自己的自定义结构和类。如果界面经过精心设计,那么不应该有任何问题。如果界面没有考虑这种情况,那么您可能会遇到可能非常困难或几乎无法调试的问题(随机崩溃,堆栈对齐问题等)。