я думал о трудности возникли с обработкой ошибок C .. как кто на самом деле делаетИспользование функции обратного вызова для обработки ошибок в C
if(printf("hello world")==-1){exit(1);}
Но вы нарушите общих стандартов, не делая таких многословным, и, как правило, бесполезно кодирование. Что ж, если у вас есть обертка вокруг libc? как так что вы могли бы сделать что-то вроде ..
//main...
error_catchall(my_errors);
printf("hello world"); //this will automatically call my_errors on an error of printf
ignore=1; //this makes it so the function will return like normal and we can check error values ourself
if(fopen.... //we want to know if the file opened or not and handle it ourself.
}
int my_errors(){
if(ignore==0){
_exit(1); //exit if we aren't handling this error by flagging ignore
}
return 0;
//this is called when there is an error anywhere in the libc
}
...
Я рассматриваю возможность сделать такую обертку, как я синтезирование собственного BSD лицензированного Libc (так что я уже должен коснуться неприкасаемым ..), но я хотел бы знать, что люди думают об этом .. будет ли это работать в реальной жизни и быть более полезным, чем возвращение -1?
Проверка на printf (...) == -1 не полезна, так как printf (...) возвращает количество напечатанных символов и не может быть меньше 0. – Kai
«Количество напечатанных символов возвращается . Если произошла ошибка, возвращается -1. " – Earlz
Вы имеете в виду, что все функции libc завернуты, чтобы перейти к параметрам error_catchall в случае ошибки? – LB40