mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik KEIL C51 Problem


Autor: yoshi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend!

Ich wollte den Sourcecode vom GPS-Logger Projekt auf einen 8051er 
portieren. (51 COMPILER V7.05)
Jetzt kriege ich noch einen Fehler beim kompilieren. Und zwar:

syntax error near 'File'

auf der Zeile:
File logFile;


Meine Frage: wie werden beim KEIL compiler Strukturen richtig 
geschriben?
Momentan sieht die 'File' Struktur so aus:
typedef struct afile
{
  unsigned long   start_cluster;        // Sectorpointer to the first sector of the first datacluster of the file. 
  unsigned long   cluster_pointer;      // Pointer to the cluster which is edited at the moment.
  unsigned char   sector_index;        // The sector which is edited at the moment (cluster_pointer + sector_index).
  unsigned int    byte_index;          // The bytelocation within the current sector (cluster_pointer + sector_index + byte_index).
  unsigned char   mode;            // mode of fileoperation (read,write)
  unsigned long  filesize;          // the size of the opend file in bytes.
  unsigned long  fileposition;        // pointer to a character within the file 0 < fileposition < filesize
  unsigned long  sector_in_buffer;      // the last sector read, wich is still in the sectorbuffer.
  unsigned long  directory_sector;      // the sectorposition where the directoryentry has been made.
  unsigned char  directory_index;      // the index to the directoryentry within the specified sector.
  unsigned char  attribute;          // the attribute of the file opened.
} File; 

Autor: R. W. (quakeman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Definition eines Struct in C51 laut Handbuch würde fast genauso 
aussehen wie du es gemacht hast nur ohne das typedef und das File:
struct afile
{
  unsigned long  start_cluster;        // Sectorpointer to the first sector of the first datacluster of the file. 
  unsigned long  cluster_pointer;      // Pointer to the cluster which is edited at the moment.
  unsigned char  sector_index;        // The sector which is edited at the moment (cluster_pointer + sector_index).
  unsigned int   byte_index;          // The bytelocation within the current sector (cluster_pointer + sector_index + byte_index).
  unsigned char  mode;            // mode of fileoperation (read,write)
  unsigned long  filesize;          // the size of the opend file in bytes.
  unsigned long  fileposition;        // pointer to a character within the file 0 < fileposition < filesize
  unsigned long  sector_in_buffer;      // the last sector read, wich is still in the sectorbuffer.
  unsigned long  directory_sector;      // the sectorposition where the directoryentry has been made.
  unsigned char  directory_index;      // the index to the directoryentry within the specified sector.
  unsigned char  attribute;          // the attribute of the file opened.
}; 


Und die Initialisierung einer Variable samt einem Datensatz würde für 
dein Beispiel folgendermassen aussehen:
struct afile data info[1]={1,2,"3",4,"5",6,7,8,9,"10","11"};
Dabei steht data nur für den Speicherbereich in dem die Variable 
angelegt wird. Und die 11 Werte hintendran entsprechen deinen 11 Feldern 
des Struct.

Ich habe bisher selber noch nie einen Struct verwendet, weshalb diese 
Informationen alleine aus dem Handbuch stammen. Aber ich hoffe, ich habe 
mich nirgends verschrieben. ;)

Ciao,
      Rainer

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> syntax error near 'File'
Das deutet beim C51 drauf hin, dass der Fehler weiter oben liegt. 
Entweder fehlt ein Prototyp oder die Bekanntmachung von FILE oder eines 
anderen Typs (z.B. durch fehlende includes).

Ralf

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.