Forum: Mikrocontroller und Digitale Elektronik Problem mit "long long" Datentyp und msp430


von Erni (Gast)


Lesenswert?

Ich möchte ein Programm aus einer AppNote von TI kompilieren. Darin 
kommt folgende Zeile vor:
1
typedef unsigned long long  UINT64;

und dazu folgende Fehlermeldung:

the type "long long" is nonstandard


Was muss ich machen um mein C-File kompilieren zu können?

Danke

Erni

von Falk B. (falk)


Lesenswert?

@ Erni (Gast)

>Was muss ich machen um mein C-File kompilieren zu können?

Die selbstgestrickten Datentypen vergessen und stdint.h nutzen, dort 
gibt es uint64_t bzw int64_t, das sind saubere 64 Bit.

MFG
Falk

von Niels H. (monarch35)


Lesenswert?

demnach sollte ein
1
#include <stdint.h>
2
typedef uint64_t UINT64;
eigentlich helfen.
Ich dachte nur, das sollte etwas einfacher sein, als jetzt mit 
search&Replace alle UINT64 nach "uint64_t" zu ändern....

von Erni (Gast)


Lesenswert?

In meinem stdint.h steht:
1
/* sorry, int_least64_t not implemented for C54x, C55x, MSP430 */

von yalu (Gast)


Lesenswert?

Es sieht so aus, als ob der Compiler keine 64-Bit-Integers
unterstützt.

Des Weiteren scheint er noch nicht C99-konform zu sein, da er kein
long long kann. Aber selbst wenn er long long könnte, wäre es nicht
sicher, dass dieser Typ tatsächlich 64 Bits breit ist.

von Erni (Gast)


Lesenswert?

Hmm.. dieser Code wurde doch von TI geschrieben.. müsste doch gehen.

Der Code wurde für die IAR IDE mit integriertem Compiler geschrieben. 
Ich hab die nun in Eclipse kompiliert. Gibts da so grosse unterschiede?

Wurden beide auf der TI-CD mitgeliefert!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Der Code wurde für die IAR IDE mit integriertem Compiler geschrieben.

Na, das ist dann wohl der Compiler, den Du verwenden solltest.

> Ich hab die nun in Eclipse kompiliert.

In Eclipse ?* Du meinst vermutlich mspgcc.

> Gibts da so grosse unterschiede?

Ja, das sind zwei komplett unterschiedliche Compiler.

*) das Plenken ist hier leider erforderlich, da sonst die // angezeigt 
werden.

von Erni (Gast)


Lesenswert?

>> Ich hab die nun in Eclipse kompiliert.

>In Eclipse ?* Du meinst vermutlich mspgcc.

Ja.

Aber in der Application Note steht, der Code laufe mit dem IAR und dem 
msp-gcc, man müsse nur die Pfade der inlcudes abändern (hab ich 
abgeändert).

Ist doch etwas seltsam, dass er diese Files nicht so kompilieren kann.

von Niels H. (monarch35)


Lesenswert?

Wäre bei Weitem nicht der erste Fehler, der sich in einer 
ApplicationNote befindet..

Ausserdem ändern sich solche defines schonmal von Zeit zu Zeit, so daß 
man auch hier nicht vor versions-inkompatibilitäten geschützt ist.

von yalu (Gast)


Lesenswert?

Bist du sicher, dass dein mspgcc up-to-date ist? Laut mspgcc-Webseite
sollte er 64 Bit können:

  "The mspgcc port of the GNU C compiler is currently based on version
  3.2.3 of GNU GCC. It supports all the current variants of the MSP430
  processor, and comes with a full set of header files for the
  processors, and a basic 'libc' library. Signed and unsigned integers
  of 8, 16, 32, and 64 bit lengths are supported. Floating point is
  supported, but only for single precision floating values
  - no double precision."

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.