Forum: Mikrocontroller und Digitale Elektronik Problem in Funktion


von Markus (Gast)


Lesenswert?

Hallo,

warum bekomme ich immer einen Fehler in dieser Funktion (s.unten) Dachte 
erst ich hätte ein } zu viel, aber ich finde nichts....

Kann mir bitte jemand helfen?!
Danke

from main.c:22:
./jalousie.h:49: error: expected ';', ',' or ')' before numeric constant
make.exe: *** [main.o] Error 1

in der .h:
1
struct StructJalousienHeben 
2
{
3
   uint16_t TimeRichtungAus; 
4
   uint16_t auf;
5
   uint16_t ab;
6
   uint16_t Richtung;
7
   uint16_t Netz;
8
};

in der .c
1
uint8_t JalStartHeben (struct StructJalousienHeben* Jal) 
2
{
3
        // Ausschalten bei einer Fahrt wenn noch mal Auf gedrückt wird
4
     if (jal_status[Jal->auf]==1 || jal_status[Jal->ab]==1)
5
      {      
6
      // erst Netz aus
7
      AusgangUnsetBit(Jal->Netz); 
8
      AusgangOut();    
9
      
10
      if (_100msImp) Jal->TimeRichtungAus++;
11
12
            if (Jal->TimeRichtungAus > 20) 
13
        {
14
          // dann Richtung Aus
15
          AusgangUnsetBit(Jal->Richtung); 
16
          AusgangOut();
17
          jal_status[Jal->auf]=0;
18
          jal_status[Jal->ab]=0;
19
          
20
          Jal->TimeRichtungAus=0;
21
          usart_writePC("aus-auf [%i],[%i]\n",Jal->auf,Jal->ab);
22
        }
23
      }  
24
    // Heben wenn noch nichts an
25
    else if (jal_status[Jal->Netz]==0 && jal_status[Jal->Richtung]==0)
26
      {          
27
        // erst Richtung ein 
28
        AusgangSetBit(Jal->Richtung); 
29
        AusgangOut();    
30
      
31
      
32
        if (_100msImp) Jal->TimeRichtungAus++;
33
34
        if (Jal->TimeRichtungAus > 20) 
35
          {
36
            // dann Netz ein 
37
            AusgangSetBit(Jal->Netz); 
38
            AusgangOut();
39
            jal_status[Jal->auf]=1;
40
            jal_status[Jal->ab]=0;
41
            
42
            Jal->TimeRichtungAus=0;
43
            usart_writePC("auf [%i],[%i]\n",Jal->auf,Jal->ab);
44
          }
45
      }  
46
47
return 1;
48
}

von Stephan B. (matrixstorm)


Lesenswert?

Hallo Markus
Haenge doch bitte die Dateien an, sodass man auch die Zeilennummern und 
den Zusammenhang sieht.

MfG

von Bitflüsterer (Gast)


Lesenswert?

Soweit ist erstmal nichts auffälliges zu sehen.

Deine Fehlermeldung enthält Zeilennummern. Wir wissen aber nicht welche 
Zeilennummern Dein Code hat.

Bitte poste mal den kompletten Code (Zeile 22 von main.c ist nicht 
enthalten) oder kennzeichne Zeile 49 der h-Datei (die, wie ich vermute, 
auch nicht gezeigt ist).

von Dr. Sommer (Gast)


Lesenswert?

Markus schrieb:
> ./jalousie.h:49: error: expected ';', ',' or ')' before numeric constant

Soll das heißen diese Funktion ist im Header jalousie.h definiert? Was 
hat sie dort zu suchen? Und in deinem Code gibts keine Zeile 49. Und was 
jal_status, AusgangUnsetBit (DEnglisch o.O), AusgangOut, etc... sind 
weiß hier auch keiner.

von spess53 (Gast)


Lesenswert?

Hi

>./jalousie.h:49: error: expected ';', ',' or ')' before numeric constant

Und was steht in Zeile 49 der jalousie.h?

Ich tippe mal auf '};'.

MfG Spess

von Bitflüsterer (Gast)


Lesenswert?

Die folgende Frage ist scherzhaft, jedenfalls rethorisch gemeint:

Was meint Ihr denn alle, was die ominäösen Zahlen in den Fehlermeldungen 
bedeuten? Die Lottozahlen von nächster Woche? :-)

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang die Dateien.... Jedoch habe ich viell Kommentar gelösht, die 
Zeilennumer 49 dürfte nicht mehr passen....

von Bitflüsterer (Gast)


Lesenswert?

> ... die Zeilennumer 49 dürfte nicht mehr passen....

Schön. Aber Du hast doch unsere Antworten so verstanden, dass wir gerne 
die Zeile identifizieren würden, für die der Fehler gemeldet wird?

Also schreibe bitte, wie die Fehlermeldung mit dem neuen Code lautet.

Es scheint aber so zu sein, dass der eigentliche Fehler in einer der vor 
jalousie.h eingefügten ist.

Poste am besten alles.

von Holger L. (max5v)


Lesenswert?

uint16_t time_open[20] = 
{500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500 
,500,500,};
Das letzte Komma ist zu viel was aber wohl nicht viel ausmacht.

Hast du mal versucht die Zeilen
1
usart_writePC("aus-auf [%i],[%i]\n",Jal->auf,Jal->ab);
2
usart_writePC("auf [%i],[%i]\n",Jal->auf,Jal->ab);
zu deaktivieren ?

Kenne deine Usart -Funktion nicht, aber das sieht mir ein wenig 
abenteuerlich aus.

von Mike (Gast)


Lesenswert?

Holger L. schrieb:
> Kenne deine Usart -Funktion nicht

Vielleicht ist die von sprintf abgeleitet ...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Holger L. schrieb:
> uint16_t time_open[20] =
> {500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500 
,500,500,};
> Das letzte Komma ist zu viel was aber wohl nicht viel ausmacht.

Nein, das Komma ist nicht zu viel. Das ist C.

von Bitflüsterer (Gast)


Lesenswert?

> Nein, das Komma ist nicht zu viel. Das ist C.
Das kommt mir wie eine humorvolle Bemerkung vor. Ha!

von Holger L. (max5v)


Lesenswert?

Johann L. schrieb:
> Holger L. schrieb:
>> uint16_t time_open[20] =
>> {500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500
> ,500,500,};
>> Das letzte Komma ist zu viel was aber wohl nicht viel ausmacht.
>
> Nein, das Komma ist nicht zu viel. Das ist C.

Gut, kannst du das kurz erklären ?
In meinen Augen ist es überflüssig, habe mich aber auch nur leicht in C 
über Internet Tutorials eingearbeitet. Da gehen sehr viele Informationen 
verloren.

von Christian B. (chbalnuweit)


Lesenswert?

Johann L. schrieb:
> Nein, das Komma ist nicht zu viel. Das ist C.

Also das C-Buch, dass ich gelesen habe, nutzt kein Komma nach dem 
letzten Array-Element.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Holger L. schrieb:
> Johann L. schrieb:
>> Holger L. schrieb:
>>> Das letzte Komma ist zu viel was aber wohl nicht viel ausmacht.
>>
>> Nein, das Komma ist nicht zu viel. Das ist C.
>
> Gut, kannst du das kurz erklären ?

Das Komma kann weggelassen werden, was nix an der Semantik ändert. Es 
ist aber auch nicht falsch, d.h. es erzeugt weder einen Syntax-Fehler 
noch ein unerwünschtes Array-Element.  Mit dem Problem des OP hat es 
also nix zu tun.

An seiner Stelle würde ich mal bei den gefühlt 20 Header anfangen, die 
da per Gießkannenprinzip reingezogen werden; teilweise mehrfach oder 
über andere Header.  Vermutlich lieht das Problem in dem Header-Wahn, 
oder daß an entscheidender Stelle z.B. stdint.h fehlt so daß uint16_t 
nicht definiert ist.

von Markus P. (sebastianwurst)


Lesenswert?

Ich konnte nur 1-2 Header datei wegnehmen, Problem lag darin, das ich 
die "JAL" Variable als Konstante-Variable in der config.h benutz. Das 
mocht er nicht?! Da ich die auch "include" hatte er da Problem 
angemeldet...

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
Noch kein Account? Hier anmelden.