sourcetip

C의 함수에서 열거를 반환합니까?

fileupload 2023. 10. 5. 23:28
반응형

C의 함수에서 열거를 반환합니까?

헤더 파일에 다음과 같은 것이 있을 경우 Foo 유형의 열거형을 반환하는 함수를 선언하려면 어떻게 해야 합니까?

enum Foo
{
   BAR,
   BAZ
};

저는 그냥 다음과 같은 것을 해도 됩니까?

Foo testFunc()
{
    return Foo.BAR;
}

아니면 타입 디프나 포인터 같은 것을 사용해야 합니까?

C++에서는 그냥 사용할 수 있습니다.Foo.

C에서는 다음을 사용해야 합니다.enum Foo당신이 그것에 대한 유형의 디프를 제공할 때까지.

그리고 나서, 당신이 언급할 때,BAR, 사용하지않습니다.Foo.BAR다만 그냥BAR. 모든 열거 상수는 동일한 네임스페이스(함수, 변수 등에서 사용되는 "일반 식별자" 네임스페이스)를 공유합니다.

따라서(C의 경우):

enum Foo { BAR, BAZ };

enum Foo testFunc(void)
{
    return BAR;
}

아니면.typedef:

typedef enum Foo { BAR, BAZ } Foo;

Foo testFunc(void)
{
    return BAR;
}

저는 개인의 가치관이enum식별자는 고유한 고유의 식별자이므로 다음을 사용하십시오.

enum Foo testFunc(){
  return BAR;
}

몇몇 컴파일러들은 다음과 같이

typedef enum tagFoo
{
  BAR,
  BAZ,
} Foo;
enum Foo
{
   BAR,
   BAZ
};

C에서는 반환 유형 앞에 열거형이 있어야 합니다.그리고 개별 열거값을 사용할 때는 어떤 식으로든 한정하지 않습니다.

enum Foo testFunc()
{
    enum Foo temp = BAR;
    temp = BAZ;
    return temp;
}

언급URL : https://stackoverflow.com/questions/742699/returning-an-enum-from-a-function-in-c

반응형