Hallo, ich möchte folgende Funktion programmieren: int setParameter(char *Parametername, int value) { switch (Parametername) { case "Parameter1":... case "Parameter2":... } } Funktionsaufruf: setParameter(Paramter1,1243); Würde das so gehen? Bin mir mit den Zeigern noch unsicher.
Das geht nicht, switch kann nur ganzzahlige Ausdrücke auswerten, keine Zeichenketten.
Du kannst es mit if machen, allerdings darfst du natürlich nicht einfach den Zeiger mit einem Stringliteral vergleichen. Wenn dann musst du strcmp oder sowas hernehmen. Könntest du das nicht mit einer enum vereinfachen? Oder weißt du erst zur Laufzeit die gültigen Parameternamen?
1 | typedef enum |
2 | {
|
3 | PARAMETER1, |
4 | PARAMETER2, |
5 | PARAMETER3, |
6 | PARAMETER4, |
7 | }ParameterType; |
8 | |
9 | int setParameter(ParameterType Parametername, int value) |
10 | {
|
11 | switch (Parametername) |
12 | {
|
13 | case PARAMETER1: |
14 | break; |
15 | case PARAMETER2: |
16 | break; |
17 | case PARAMETER3: |
18 | break; |
19 | case PARAMETER4: |
20 | break; |
21 | }
|
22 | }
|
23 | |
24 | Funktionsaufruf: |
25 | setParameter( PARAMETER1 ,1243); |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.