读书人

C 语言怎么中止函数运行

发布时间: 2012-03-01 10:25:46 作者: rapoo

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

读书人网 >C语言

热点推荐