首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C 语言怎么中止函数运行

2012-03-01 
C 语言如何中止函数运行有一个函数intTEST(int*p){intx……if(pNULL){我要在这里退出函数,但是不退出程序

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

热点排行