状态字作为函数的返回值?

时间:2015-03-26 11:49:20

标签: c status

我正在处理C中的作业,并且被要求创建一个返回状态字的函数,但我不知道这意味着什么,更不用说如何声明返回类型和如何确定返回的状态字。 请帮忙。

3 个答案:

答案 0 :(得分:1)

Сomplementingvolerag的帖子可以添加这样的方式:

typedef enum {
    FAIL,
    SUCCESS
} STATUS;

STATUS getStatus() {
    // ...
    return ...;
}

但这并没有太大的区别。

答案 1 :(得分:0)

状态字可以是一个变量(有一个值),它告诉函数的执行 - 它是否成功完成了应该做的事情。

例如:

int doSomething()
{
    if (somethingCanBeDone)
    return SUCCESS;
    else 
    return FAILURE;
}

这里,SUCCESSFAILURE是从函数返回的状态字,用于判断函数是否已成功完成它必须完成的工作。

你可以用两种方式做到这一点。

  1. 使用#define语句定义状态字。

    #define SUCCESS 1
    #define FAILURE 0
    
    int doSomething()
    {
        if (somethingCanBeDone)
        return SUCCESS;
        else 
        return FAILURE;
    }
    
    int main()
    {
          int returnval = doSomething();
          if (returnval == SUCCESS) 
          {
                //Do something
          }
          else
          {
                //Do something else.
          } 
    }
    
  2. 使用const int语句定义状态字。

    const int SUCCESS = 1;
    const int FAILURE = 0;
    
  3. 这些类似于宏,但由于它们讲述了函数的状态,因此它们被称为状态字。

答案 2 :(得分:0)

我想这个变种会更好。

#include <stdio.h>

enum {MORE=0, LESS, EQUAL, UNKNOWN};

int exec_func(int first, int second)
{
    if (first > second) return MORE;
    else if (first < second) return LESS;
    else if (first == second) return EQUAL;

    return UNKNOWN;
}

int main(void) 
{
    int res = exec_func(1, 2);
    if (res == LESS){
        //do some stuff
    }else{
        return -1;  
    } 

    res = exec_func(1, 1);
    if (res == EQUAL){
        //do smth
    }else{
        return -1;
    }

    return 0;
}

例如,这可用于描述状态。 状态:-1或6什么也没说。但是STATUS_SUCCESS或STATUS_FAILED描述了它的原因。

P.S。抱歉我的英语不好。