Wie man ENUM als Funktionsargument in C übergibt

Lesezeit: 1 Minute

Benutzeravatar von user437777
Benutzer437777

Ich habe eine Aufzählung als deklariert;

typedef enum 
{
   NORMAL = 0,           
   EXTENDED              

}CyclicPrefixType_t;

CyclicPrefixType_t cpType;  

Ich brauche eine Funktion, die dies als Argument nimmt:

fun (CyclicPrefixType_t cpType) ;  

func Deklaration ist:

void fun(CyclicPrefixType_t cpType);

Bitte helfen Sie. Ich glaube nicht, dass es richtig ist.

Vielen Dank

  • Warum halten Sie das für falsch? Was hat dir dein Compiler gesagt?

    – Jonathan Leffler

    11. Januar 2011 um 6:14 Uhr

  • Sieht für mich ganz gut aus; hast du versucht es zu kompilieren?

    – Michael Foukarakis

    11. Januar 2011 um 6:17 Uhr

  • Verwenden Sie keine Typnamen mit _t am Ende werden diese normalerweise reserviert, insbesondere von POSIX. Aber wie die anderen sagen, dein Prototyp ist ok.

    – Jens Gustedt

    11. Januar 2011 um 7:59 Uhr

Das ist ziemlich viel exakt Wie machst du es:

#include <stdio.h>

typedef enum {
    NORMAL = 31414,
    EXTENDED
} CyclicPrefixType_t;

void func (CyclicPrefixType_t x) {
    printf ("%d\n", x);
}

int main (void) {
    CyclicPrefixType_t cpType = EXTENDED;
    func (cpType);
    return 0;
}

Dies gibt den Wert von aus EXTENDED (31415 in diesem Fall) wie erwartet.

Benutzeravatar von rogerdpack
rogerpack

Das Folgende funktioniert auch, FWIW (was leicht verwirrt …)

#include <stdio.h>

enum CyclicPrefixType_t {
    NORMAL = 31414,
    EXTENDED
};

void func (enum CyclicPrefixType_t x) {
    printf ("%d\n", x);
}

int main (void) {
    enum CyclicPrefixType_t cpType = EXTENDED;
    func (cpType);
    return 0;
}

Anscheinend ist es ein altes C-Ding.

  • In diesem Beispiel CyclicPrefixType_t ist eigentlich kein Typ, sondern nur der Name des enum – also etwas anders.

    – stdcerr

    26. November 2014 um 19:04 Uhr

1387410cookie-checkWie man ENUM als Funktionsargument in C übergibt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy