Forum: Compiler & IDEs Zwei Fehlermeldungen beim Kompillieren. Bitte um Hilfe.


von Werner (Gast)


Lesenswert?

Hallo meine Freunde.


Ich bekomme zu dieser Funktion 2 Fehlermeldungen:
1
float ds18b20_readtemp (unsigned char code)
2
{
3
  int i,  ds1820skratchpad[9];
4
  float floattemp;
5
6
  cli();
7
  w1_reset();
8
  w1_command(READ, code);
9
  for (i=0; i<9; i++)
10
  {
11
    ds1820skratchpad[i] = w1_byte_rd();
12
  }
13
  sei();
14
  floattemp = ((ds1820skratchpad[1]<<8)+ds1820skratchpad[0])*0.0625;
15
  return floattemp;
16
}

1. parameter name omitted  (Zeile 1)
2. expected expression before ')' token   (Zeile 9)


Prototyp ist deklariert. Kann mir jemand sagen was hier falsch ist? Ich 
kann sie mir leider nicht erklären.

Viele Grüße

von Peter II (Gast)


Lesenswert?

Werner schrieb:
> 1. parameter name omitted  (Zeile 1)
> 2. expected expression before ')' token   (Zeile 9)

ist Zeile 1 wirklich zeile 1? gibt es nicht noch includes?



warum ein int Array, wenn du nur Bytes darin speicherst?

von Werner (Gast)


Lesenswert?

Nein, natürlich nicht. Die Zeilenangaben beziehen sich auf den 
geposteten Codeschnippsel ;)

Deswegen ja auch nur ein uint8. Ja ich weis, ich hätte auch gleich ein 
Char-Array machen können, aber daran liegt es nicht. :)

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Entspricht der Parameter des Prototypen dem Parameter der Funktion?

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

wie sind die Prototypen der w1_ Funktionen definiert? Anscheinend 
erwartet der Compiler einen Parameter bei w1_byte_rd.

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Ach ja, du erzeugt trotzdem ein int-array, auch wenn der Parameter 
unsigned char ist

von Thorsten (Gast)


Lesenswert?

Gib deinem Übergabeparameter "code" mal einen anderen Namen.

von Werner (Gast)


Lesenswert?

Der Funktionsprototyp:
float ds18b20_readtemp(unsigned char code);

für die w1-Funktionen:
uchar w1_reset(void);
uint w1_byte_rd( void );
void w1_command( uchar command, uchar idata *id );

von Werner (Gast)


Lesenswert?

Danke Thorsten.

Jetzt klappts. :)

von Rolf Magnus (Gast)


Lesenswert?

Werner schrieb:
> Deswegen ja auch nur ein uint8.

Wo?
1
int i,  ds1820skratchpad[9];
2
        ^^^^^^^^^^^^^^^^^^^

Das ist ein Array aus int.

von Ronny S. (duselbaer)


Lesenswert?

Interessant ... seit wann ist denn "code" ein Keyword in C und welche 
Bedeutung hat es? Ich konnte da nix zu finden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

In C selbst nicht, aber möglicherweise beim hier verwendeten ungenannten 
Compiler.

von Jim M. (turboj)


Lesenswert?

Ronny Spiegel schrieb:
> Interessant ... seit wann ist denn "code" ein Keyword in C und
> welche
> Bedeutung hat es? Ich konnte da nix zu finden.

Wenn das mal für einen 8051 gedacht war, findet sich vermutlich in 
irgendeinem Header noch ein:
1
#define code

D.h. "code" wird durch "" (nix) ersetzt. Bei 8051 C Compilern gibt man 
mit "code" das Code-Segment (für Konstanten oder Strings) vor.

Du solltest dann auch bei "data", "idata", "xdata" oder "pdata" 
aufpassen. Da könnte dasselbe passieren.

: Bearbeitet durch User
von größer, nicht länger (Gast)


Lesenswert?

Ronny Spiegel schrieb:
> Interessant ... seit wann ist denn "code" ein Keyword in C und
> welche Bedeutung hat es? Ich konnte da nix zu finden.

Was viel schlimmer ist: Ein C Compiler gibt keine vernünftigen Meldungen 
aus. Fehlt irgendwo eine Klammer, zeigt der Error auf irgendein Symbol 
20 Zeilen tiefer.

Das ist Futter für den Schwanz, ähh Compiler Vergleich in einem parallen 
Thread.

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.