Software Problem

Gast #3713761
Lesenswert?
• ▲
▼
Hallo,

ich Programmiere einen PIC16 in MPLAB8 mit dem HI-TECH Compiler. Bei 
dieser Codezeile bekomme ich immer diesen Fehler:

Error   [712] C:\Projekte\...\main.c; 371. für diesen Ausdruck kann kein 
Kode erzeugt werden

1
ui_a[i] = (unsigned int)(((unsigned short long)ui_a[i] * ui_b[i]) / ui_c[i]);

ui steht für unsigned int. Die Variable i ist vom Typ unsigned char.

Wenn ich eine Zahl als Index von ui_a[] wähle, funktioniert es 
komischerweise:
1
ui_a[2] = (unsigned int)(((unsigned short long)ui_a[i] * ui_b[i]) / ui_c[i]);

Und das hier funktioniert auch:
1
ui_a[i] = 4;

Hat jemand eine Idee für mich?
#3713784
Lesenswert?
• ▲
▼
hmmm schrieb:
> (unsigned short long)...
>
> decisions...decisions... :)
Das ist ein 24Bit Datentyp ;)

Sebastian Hepp schrieb:
> Müssen Indizes von Arrays nicht immer den Typ Integer haben?
unsigned char ist ein Integer. Normalerweise benutzt man size_t, aber 
wenn man einen uC programmiert und von vornherein weiss, dass der 
grösste Wert kleiner 255 ist, so kann man gut und gerne unsigned char 
verwenden.
Gast #3713850
Lesenswert?
• ▲
▼
Chris schrieb:
> Error   [712] C:\Projekte\...\main.c; 371. für diesen Ausdruck kann kein
> Kode erzeugt werden

Ist das alles an Fehlermeldung, was man von teuerer Profi-Software 
bekommt?
1
1.c: In function ‘main’:
2
1.c:9: error: both ‘long’ and ‘short’ in declaration specifiers
Gast #3713857
Lesenswert?
• ▲
▼
Yalu X. schrieb:
>> Es gibt keinen
>> short long
>> Datentyp
>
> Das ist eine C-Erweiterung dieses Compilers und steht für einen
> 24-Bit-Integer-Typ.

Na, wer unbedingt nicht portablen Code schreiben will, bitte.
Ich bleib beim Standard (ANSI C90), und da gibt es kein short long.
Gast #3713859
Lesenswert?
• ▲
▼
1
ui_a[i] = (unsigned int)(((unsigned short long)ui_a[i] * ui_b[i]) / ui_c[i]);

Wenn "short long" (24 Bit) nicht der Fehler ist, dann ist der Ausdruck 
für den Compiler zu komplex, um diesen in Code umzusetzen?
Gast #3713860
Lesenswert?
• ▲
▼
1
When compiling for baseline devices, some complex expressions may
2
cause compile-time errors (712) Can’t generate code for this expression. The expres-
3
sions should be simplified to work around this. This may require the use of additional variables to store
4
intermediate results. This is most likely with long integer or floating-point arithmetic.
Gast #3749817
Lesenswert?
• ▲
▼
Rufus mäkelte:
>Ansonsten scheint das eine Art Bascom unter den C-Compilern zu sein,
>wenn bereits ein so simpler Ausdruck solch eine Fehlermeldung zur Folge
>hat ...

Du kannst wohl nicht mit Bascom umgehen, sonst würdest Du mit Deinem Tun
dort nicht solche Fehlermeldungen erzeugen?

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.