我在caffe中使用glog,并且我想在glog中重写CHECK_OP,以便可以在其中添加一些自卫错误代码。
我希望这样实现,如果原始CHECK失败,则输出默认错误代码,如果修改后的CHECK失败,则输出给出的错误代码
CHECK(false) << "some string"; // output Default error code
CHECK(false, TRAIN_LIST_TOO_SMALL) << "some sting"; // output TRAIN_LIST_TOO_SMALL error code, and TRAIN_LIST_TOO_SMALL is a macro definition
我从
修改了CHECK_OP#define CHECK_EQ(val1, val2) CHECK_OP(_EQ, ==, val1, val2)
到
#define ZCHECK_OP(name, op, val1, val2, error_code, ...)\
CHECK_OP(name, op, val1, val2) \
<< ", Error code: " << error_code << " "
#define CHECK_EQ(val1, val2, ...) ZCHECK_OP(_EQ, ==, val1, val2, __VA_ARGS__, DEFALUT_ERROR, ...)
#define CHECK_NE(val1, val2, ...) ZCHECK_OP(_NE, !=, val1, val2, __VA_ARGS__, DEFAULT_ERROR, ...)
但是,以下代码
CHECK_EQ(error, cudaSuccess) << " " << cudaGetErrorString(error);
遇到语法错误“ <<”
error 1625 error C2059:“<<” (..\..\src\caffe\layers\pooling_layer.cpp)
此外,我整个下午都在挣扎,仍然无法解决。
非常感谢!