Как переписать CHECK_OP в glog в caffe
Я использую glog в caffe, и я хочу переписать CHECK_OP в glog, чтобы я мог добавить в него некоторый код ошибки самообороны.
Я хотел бы реализовать, как это, если исходный 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)
К сожалению, я борюсь весь день и до сих пор не могу понять это.
Большое спасибо!!