Fehlermeldung in delay_basic.h

Gast #871215
Lesenswert?
• ▲
▼
Moin zusammen,

Ich habe ein Problem und zwar spuckt mir neuerdings der Compiler 3 
meldungen raus die aus der delay_basic.h kommen aber ich hab keine 
ahnung warum die erzeugt werden. hier die genauen fehler meldungen

e:/programme/winavr/bin/../avr/include/util/delay_basic.h:65: error: 
storage class specified for parameter '_delay_loop_1'
e:/programme/winavr/bin/../avr/include/util/delay_basic.h:66: error: 
storage class specified for parameter '_delay_loop_2'
e:/programme/winavr/bin/../avr/include/util/delay_basic.h:82: error: 
expected ';', ',' or ')' before '{' token

und hier der abschnitt aus der basic.h wo diese "erzeugt" werden.
1
#if !defined(__DOXYGEN__)
2
static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
3
static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
4
#endif
5

6
/** \ingroup util_delay_basic
7

8
    Delay loop using an 8-bit counter \c __count, so up to 256
9
    iterations are possible.  (The value 256 would have to be passed
10
    as 0.)  The loop executes three CPU cycles per iteration, not
11
    including the overhead the compiler needs to setup the counter
12
    register.
13

14
    Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
15
    can be achieved.
16
*/
17
void
18
_delay_loop_1(uint8_t __count)
19
{
20
  __asm__ volatile (
21
    "1: dec %0" "\n\t"
22
    "brne 1b"
23
    : "=r" (__count)
24
    : "0" (__count)
25
  );
26
}

was läuft da falsch ? weiss das jmd eventuell ?
Gast #871238
Lesenswert?
• ▲
▼
ein einfaches Programm alá
1
#include <util/delay.h>
2

3
int main(void)
4
{
5
     
6
  _delay_ms(200);
7

8
}


funktioniert.

Also an Code verwende ich hier aus dem tutorial die LCD steuerung und 
dort wird sowas hier verwendet aber das hat sonst auch eigentlich 
funktioniert.
ich bekomm das programm auch irgenwie nicht mehr in den ursprungs 
zustand.
das sind insgesamt 4 kleine dateien soll ich die auch ma posten ? weil 
aus den codschnippseln wird bestimmt keiner schlau oder ?
1
// setzt den Cursor in Zeile y (1..4) Spalte x (0..20)
2
 
3
void set_cursor(uint8_t x, uint8_t y)
4
{
5
  uint8_t tmp;
6
 
7
  switch (y) {
8
    case 1: tmp=0x80+0x00+x; break;    // 1. Zeile
9
    case 2: tmp=0x80+0x40+x; break;    // 2. Zeile
10
    case 3: tmp=0x80+0x14+x; break;    // 3. Zeile
11
    case 4: tmp=0x80+0x54+x; break;    // 4. Zeile
12
  }
13
  lcd_command(tmp);
14
}
Moderator Persönliche Seite #871268
Lesenswert?
• ▲
▼
Dieses Fehlermeldungs-Kauderwelsch kann man vermutlich nur dann
wirklich interpretieren, wenn man sich den Code nach dem Präprozessor
ansieht, also so, wie der Compiler ihn dann wirklich zu sehen
bekommt.

Dummerweise ist die Syntax von C zuweilen so verkorkst (durch
Mehrdeutigkeiten), dass man als Compiler kaum eine bessere Fehlermeldung
generieren kann, da die Zahl der Möglichkeiten, was die Ursache war,
teilweise recht groß ist.

Du hättest aber auch deinen tatsächlichen Code hier posten können,
glaub' mir, manch erfahrener C-Programmierer hier hätte das fehlende
Semikolon oder die fehlende Klammer schon noch vor dir entdeckt...  Du
kannst prinzipiell erstmal davon ausgehen, dass die Headerdateien als
solche in sich korrekt sind und nicht grundsätzlich bei jedem
derartige Fehlermeldungen generieren.
Gast #871383
Lesenswert?
• ▲
▼
Jo das der fehler nicht an der Header Datei liegt hab ich mir schon 
gedacht. Aber grade deswegen war ich verwundert warum die Header Datei 
als fehler quelle angegeben worden ist.


Und den C-Text hier zu posten das wollte ich euch eigentlich nicht über 
euch ergehen lassen in einem c Text von mir zu lesen. Ich programmier c 
eigentlich erst seit 1ner woche oder so :o)

Aber ich poste mal alles dann kannste ja mal gucken ;).


ich find es immer spannend in "fremden" c code zu schnüffeln und zu 
gucken wie so manch einer die sachen realisiert hat.
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.