我试图在g++ 4.7中使用dmalloc。
我收到的错误消息是:
/usr/include/dmalloc.h:457:32: error: declaration of 'char* strdup(const char*)' has a different exception specifier
/usr/include/string.h:130:14: error: from previous declaration 'char* strdup(const char*) throw ()'...or,我一定要修补dmalloc吗?
发布于 2012-11-12 17:04:27
C函数不会抛出异常,但是异常可以在C函数框架之间传播。抛出()规范告诉编译器,这个函数不能产生任何异常,无论是由函数生成还是由链上的其他函数生成。
在本例中,您正在编译一个C++源代码,它碰巧包含一个带有C链接的函数的外部声明。这本身并不允许编译器得出任何关于库的结论,库包含函数,也不允许对用于实现该函数的语言作出任何结论,因此编译器不能假定任何关于异常的情况,如果抛出()规范没有放在那里,则必须保守地编译代码。
您必须更新和/或修补dmalloc。
发布于 2012-11-12 17:15:19
从strdup中删除dmalloc.h的声明。它似乎在玩弄不再起作用的C库。
https://stackoverflow.com/questions/13347479
复制相似问题