Code Composer Studio Fehler: assignment makes integer from.

Gast #4213453
Lesenswert?

Hallo zusammen!

Ich habe für einen MSP430F5529 eine Routine für den 1-Wire-Bus von 
Dallas geschrieben. Das Ganze habe ich in der Energia IDE gemacht und es 
funktioniert auch.

Jetzt habe ich den Code in das Code Composer Studio Ver.6.1 von TI 
importiert. Als Compiler habe ich den GNU GCC v4.6.3 ausgewählt. Nach 
einigen Klimmzügen habe ich den Code auch kompiliert bekommen und er 
läuft auch. Im 2. Schritt wollte ich den Code in sinnvolle Module, d.h. 
mehrere C-Dateien. Das hat nach einigem Hin und Her auch geklappt, 
allerdings bringt der Compiler immer an dieser Stelle
1
if ( int(ow_rom[i]) <= 9 ) ID+="0";  //ist Bytewert kleiner 10 ==> 0 davor

diesen Fehler :
  assignment makes integer from pointer without a cast [enabled by 
default]
  expected expression before 'int'

Das Array ist wie folgt deklariert:
1
unsigned char ow_rom[8]

Was mache ich an dieser Stelle falsch. Ich verstehe es einfach nicht 
(komme eher aus der Pascal Ecke). Kann ich das int an dieser Stelle weg 
lassen? Wenn ich das in der Energia IDE mache kommt Schrott raus.

Bin für jede Hilfe dankbar.
Gast #4213461
Lesenswert?

Twinsetter schrieb:

1
if ( int(ow_rom[i]) <= 9 ) ID+="0";  //ist Bytewert kleiner 10 ==> 0

> Was mache ich an dieser Stelle falsch. Ich verstehe es einfach nicht

Du verwendest einen C++ cast in einem C-Programm.
1
if ( (int) (ow_rom[i]) <= 9 ) ID+="0";  //ist Bytewert kleiner 10 ==> 0


So müsste es gehen.
Gast #4213471
Lesenswert?

@mfro
Dein Tip war der Richtige ! Jetzt ist nur eine Warning da. Aber damit 
kann ich für's erste leben

Bei der Gelegenheit habe ich aus der ID Variable auch gleich noch ein 
Zeichenarray gemacht ist ja wohl dann auch C-like.

Danke an alle die so schnell geantwortet haben.

Der C-Kram raubt mir noch den Verstand
Gast #4213488
Lesenswert?

@Peter II
@Max H

Leider funktionieren in der Energia IDE nicht alle C Befehle. Speziell 
bei der Stringverarbeitung geht da nicht alles.

Mit der NULL am Ende macht schon Sinn, weil danach wird der HEX 
formatierte Wert von ow_rom[i] + 1 Leerzeichen angehangen.
1
ID += String(int(ow_rom[i]), HEX)+ " ";  //ID String bilden

Am Ende kommt dann so etwas raus : 01 a7 ff .....
Das habe ich schon mit der Energia IDE ausprobiert und das läuft auch. 
Der Code ist vielleicht nicht der Weisheit letzter Schluß aber er ist 
übersichtlich und ich weiß auch nach einem Jahr was ich gemacht habe.

Ich empfinde C schon etwas nervig. Soweit mir bekannt ist, ist ja C++ 
eine Weiterentwicklung von C mit eingebauter Objektorientierung und C# 
hat Ganze noch ein bischen aufgebläht. Dann sollte C++ eigentlich C ja 
vollständig unterstützen ist aber leider nicht so. Man macht wieder was 
Neues und als ob das nicht genug wäre ist auch jeder Compiler noch ein 
klein wenig anders - sonst wär's ja zu einfach. Aber wie gesagt ich 
komme aus der Pascalecke und da läuft es halt ein bissl anders.

Danke noch mal für die Unterstützung, hat mir auf alle Fälle weiter 
geholfen und dümmer bich auch nicht geworden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren