【发布时间】:2018-05-20 04:05:04
【问题描述】:
我试图在不使用exit() 的情况下退出程序。我想出了一个非常复杂和肮脏的解决方案(我是初学者)。
我想使用if 语句,如果是真的,那么我想使用goto 进入主函数然后return 3; 并结束程序。
这是一段代码:
FILE *filepointer;
char * line = NULL;
size_t len = 0;
size_t read;
int linecount = 0;
filepointer = fopen(filename, "r");
if (filepointer == NULL)
{
printf("[ERR] Could not read file %s.\n",filename );
goto FILE_ERROR;
}
...
int main(){
...
FILE_ERROR: return 3;
}
但这不起作用,因为我无法在函数之间跳转,因为我得到 undeclared Label 作为错误。有什么办法可以从我的程序中排除 exit() 并仍然结束它返回某个值。如果有更好的解决方案,请告诉我
【问题讨论】:
-
建议:重构你的逻辑,然后是代码。
goto被认为是邪恶的。 -
不要...只是不要
-
答案很明确,
always avoid to use goto and jumps in code,但如果你真的想看看它是如何工作的和可以使用的,请看stackoverflow.com/questions/2891766/… -
想退出的时候直接返回
main,让main返回即可。如果您无法构建您的程序来执行此操作,那么您可以使用setjmp/longjmp。不过我真的不明白这一点。
标签: c