Мне просто интересно, возможно ли получить функцию в C ++ в системе Unix, которая будет возвращать -1, а не 255?
Я программировал некоторые вещи для OpenCV и понял, что они работают не так, как задумано. Функции, которые я использовал, должны были возвращать -1, но все время возвращали 255. Так что мне просто интересно, есть ли какая-нибудь конфигурация, которую я смог бы сделать, чтобы разрешить код возврата -1?
Это пример, который я использую из моего учебника
int main( int argc, char** argv ) {
int i = 0;
cv::namedWindow( "Example3", cv::WINDOW_AUTOSIZE );
cv::VideoCapture cap;
cap.open( std::string(argv[1]) );
cv::Mat frame;
for(;;) {
cap >> frame;
if( frame.empty() ) break; // Ran out of film
cv::imshow( "Example3", frame );
std::cout<<"waitkey:"<<cv::waitKey(33) << std::endl;
}
return -1;
}
Информацию о waitkey () можно найти Вот
POSIX говорит,
Значение статуса может быть
0
,EXIT_SUCCESS
,EXIT_FAILURE
или любое другое значение, хотя только младшие 8 бит (то естьstatus & 0377
) должен быть доступен сwait()
а такжеwaitpid()
; полная стоимость должна быть доступна отwaitid()
и вsiginfo_t
передается обработчику сигнала дляSIGCHLD
,
Итак, это программа оболочки, которая сужает значение до 8 бит, когда она использует определенные API POSIX для управления своими дочерними элементами.
Кажется, что эта проблема на самом деле является ошибкой с кодом OpenCV. Ошибка была устранена и отправлена в главную ветку OpenCV GitHub