C 语言如何中止函数运行
有一个函数
int TEST(int *p)
{
int x;
……
if (p == NULL)
{
我要在这里退出函数,但是不退出程序,应该怎么做?
}
……
return x;
}
int main()
{
int a;
int *p;
……
a = TEST(p);
……
return 0;
}
有这么几个问题:
1. 如果用 return 的话?我 return 一个什么样的值呢?函数正常运行(p!=NULL)时,函数 TEST 的返回值取值范围是 int 型中所有的值,因此 return 无法使用。
2. 用 exit 或 abort 就会直接退出程序,但是我仅仅希望退出函数。
3. if (p == NULL) 这个条件我希望放在 TEST 函数中,而不是主函数中,我觉得这样函数的模块化会更好一些。
4. 这个貌似 C++ 中的异常处理可以解决,但是 C 语言中没有异常处理。
请教高人!
[解决办法]
感觉楼主说的话和想要实现的功能有点自相矛盾。
要想退出函数,唯一的办法就是return。既然函数返回值是int,那return只能返回int。
[解决办法]
如果你这个函数需要取得所有int值的话,你可以这样
bool test(int *p,int *x)
{ //用x指针来返回你想要的结果,而程序用return返回TRUE 或FLASE
if (p == NULL)
return FLASE;
.....
}
[解决办法]
assert(p);
[解决办法]
要做就变态点,采用go语句就ok了。
[解决办法]
#include "windows.h "
#include "iostream "
using namespace std;
int fun(int* p)
{
SetLastError(ERROR_SUCCESS);
if (p == NULL)
{
SetLastError(ERROR_INVALID_HANDLE);
return 0;
}
return *p;
}
int main()
{
int n = 0;
if (fun(&n) == 0 && GetLastError() == ERROR_INVALID_HANDLE)
{
cout < < "error " < <endl;
}
else
{
cout < < "success " < <endl;
}
if (fun(NULL) == 0 && GetLastError() == ERROR_INVALID_HANDLE)
{
cout < < "error " < <endl;
}
else
{
cout < < "success " < <endl;
}
return 0;
}
[解决办法]
函数设计的不合理
[解决办法]
可以在程序中break,调试一下就可以了
[解决办法]
可以goto,直接return呀,如果要想要抛出异常一样先setjmp,再在那儿longjmp吧
[解决办法]
setjmp,longjmp
[解决办法]
setjmp,longjmp
[解决办法]
setjmp,longjmp