Как переписать 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)

К сожалению, я борюсь весь день и до сих пор не могу понять это.

Большое спасибо!!

0 ответов

Другие вопросы по тегам