提问者:小点点

带CPPUTEST的特征?


我在尝试使用CPPUTest测试我的库时遇到了一个问题。

一切都很好,直到我加入了Eigen库来处理矩阵处理。当我尝试用G++构建时,Eigen库不断抛出错误:

>

/EIGEN3/EIGEN/SRC/CORE/COREEvaluators.h:1655:12错误:“static_cast"之前需要类型说明符

/eigen3/eigen/src/core/plainobjectbase.h:137:5错误:将“operator new”声明为非函数

如果Eigen或CPPUTest分别运行,则不会输出错误。

我的猜测是这两个库在某一点上有冲突。

这里真的需要一些帮助。非常感谢。

编辑1:这是我的makefile:

CXX=g++-std=c++0x-lstdC++CXXFLAGS=-g-wall-statice-fprofile-arcs-ftest-coverage-i./-i(CPPUTEST_HOME)/include LDFLAGS=-l./-l(CPPUTEST_HOME)/lib-lCPPUTEST-lCPPUTESText-pthread CPPUTEST_HOME=。/CPPUTEST/workspace/install USER_CFLAGS=-i/usr/local/include/eigen3 TARGET=MyLibrary SRCS=-name“。gcda”xargs-r r


共1个答案

匿名用户

CppUTest似乎定义了一个宏:https://github.com/CppUTest/CppUTest/blob/master/include/CppUTest/memoryleakdetectornewmacros.h.l76

当我在/code>之前/code>时,我不会得到您报告的错误(尽管没有进一步测试)。或者,您可以在包含CppUTest之后,或者在包含CppUTest之前定义(这当然将禁用泄漏检测)。

Eigen中有问题的行使用了placement-new运算符(例如,它自己不分配内存,它的语法使cpputest's宏失效)。