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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Werner (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo meine Freunde.


Ich bekomme zu dieser Funktion 2 Fehlermeldungen:
float ds18b20_readtemp (unsigned char code)
{
  int i,  ds1820skratchpad[9];
  float floattemp;

  cli();
  w1_reset();
  w1_command(READ, code);
  for (i=0; i<9; i++)
  {
    ds1820skratchpad[i] = w1_byte_rd();
  }
  sei();
  floattemp = ((ds1820skratchpad[1]<<8)+ds1820skratchpad[0])*0.0625;
  return floattemp;
}

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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht lesenswert
Entspricht der Parameter des Prototypen dem Parameter der Funktion?

von Alex B. (tecnologic) Benutzerseite


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

von N. G. (newgeneration) Benutzerseite


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

von Thorsten (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Gib deinem Übergabeparameter "code" mal einen anderen Namen.

von Werner (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Danke Thorsten.

Jetzt klappts. :)

von Rolf Magnus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Werner schrieb:
> Deswegen ja auch nur ein uint8.

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

Das ist ein Array aus int.

von Ronny S. (duselbaer)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


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

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht 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:
#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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.