Ich habe über die Schwierigkeit zu denken entstand mit C Fehlerbehandlung .. wie die tatsächlich tutMit Callback-Funktionen zur Fehlerbehandlung in C
if(printf("hello world")==-1){exit(1);}
Aber Sie brechen gemeinsame Standards nicht so weitschweifig zu tun, und in der Regel nutzlos Codierung. Was wäre, wenn Sie einen Wrapper um die libc hätten? wie so dass Sie etwas tun könnte, wie ..
//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
}
...
ich angesichts mache einen solchen Wrapper wie ich meine eigenen BSD lizenziert libc bin Synthese (so habe ich bereits die unantastbar berühren ..), aber ich möchte wissen, was die Leute darüber denken. würde dies tatsächlich im wirklichen Leben funktionieren und nützlicher sein als die Rückkehr von -1?
Die Überprüfung auf printf (...) == -1 ist nicht sinnvoll, da printf (...) die Anzahl der gedruckten Zeichen zurückgibt und nicht kleiner als 0 sein kann. – Kai
"Die Anzahl der gedruckten Zeichen wird zurückgegeben Wenn ein Fehler aufgetreten ist, wird -1 zurückgegeben. " – Earlz
Sie meinen, dass alle libc-Funktionen umgebrochen sind, um im Fehlerfall zu den Parametern von error_catchall zu gelangen? – LB40