Hallo, ich habe die Aufgabe den IAR C++ Compiler mit dem C++ Standard zu vergleichen. Neben den Punkten im IAR Datenblatt interessieren mich auch speziellere Probleme/Unterschiede die sich vielleicht bei der intensiven Anwendung ergeben. Vielleicht sind jemandem ja Unterschiede aufgefallen! Bin über jeden Hinweis sehr dankbar!! Viele Grüße, TomTom
Versuche dein Glück doch mal im LPC2000 Forum von Yahoo. Der IAR Compiler scheint mir unter den Mitgliedern dort recht verbreitet zu sein. Ich könnte mir auch vorstellen das IAR selbst ein Forum betreibt.
Hi, Du kannst z. B. in einer for-Schleife die Variablendeklaration zusammen mit der Initialisierung durchführen:
1 | for (int i; i < 10; i++) |
Ist das konform nach C++? Die hier sagen ja (2. Absatz nach dem Code): http://mathbits.com/mathbits/compsci/looping/for.htm In ANSI-C ist es soweit ich weiß nicht erlaubt. Was ich aber zumindest beim IAR als Bug betrachte ist der Umstand, dass er mir Variablen größer als 8 Bit auch auf ungerade Adressen ablegt. Kopierst du diese Variablen um, gehen dir Bytes verloren (siehe Alignment). Das wird nicht angemeckert! Keine Warnung, kein Fehler, gar nix. Das IAR sein eigenes Süppchen kocht siehst du schon an den Librarys: Die heißen da .r43 (genau wie die Object-Files). Irgendwelche anderen Libs einbinden: Fehlanzeige. Dann musst du den Sourcecode erst mit XAR zu ner .r43 packen und dann einbinden. Was willst du denn machen? Will sich deine Firma den anschaffen? Wenn ja, bedenke, dass der nur mit nem USB-Dongle compilieren kann. Das ist manchmal ziemlich nervig, wenn mehrere Leute programmieren wollen. Dann geht das Gesuche los, wer denn gerade den Dongle in welchem Rechner stecken hat. Den gcc gibts ja auch für viele Platformen und das für Win, Linux und Mac. Der lässt dich optimal in viele Entwicklungsumgebungen einbinden. Der Debugger bzw. Simulator beim IAR ist aber ganz ok. Grüße Daniel
Daniel wrote: > Hi, > > Du kannst z. B. in einer for-Schleife die Variablendeklaration zusammen > mit der Initialisierung durchführen: > >
1 | > for (int i; i < 10; i++) |
2 | >
|
> > Ist das konform nach C++? Die hier sagen ja (2. Absatz nach dem Code): > http://mathbits.com/mathbits/compsci/looping/for.htm > In ANSI-C ist es soweit ich weiß nicht erlaubt. Mal etwas weiter ausgeholt: Das ANSI hat C im Jahre 1989 standardisiert. Das ist das sogenannte "ANSI-C". Das ANSI ist weiterhin Mitglied der ISO. Und ebendiese ISO hat u.A. 1999 die veraltete ANSI-C-Norm überholt, und seit dem sind unter Anderem Variablendeklarationen in der for-Schleife erlaubt. Genauso übrigens wie inline, bool, uint8_t, Komplexe Zahlen, Variablendeklarationen mitten in Funktionen, '//'-Kommentare, volatile, const und "and" und "or" etc. > Was ich aber zumindest beim IAR als Bug betrachte ist der Umstand, dass > er mir Variablen größer als 8 Bit auch auf ungerade Adressen ablegt. > Kopierst du diese Variablen um, gehen dir Bytes verloren (siehe > Alignment). Das wird nicht angemeckert! Keine Warnung, kein Fehler, gar > nix. Langsam -- wo der Compiler seine Variablen ablegt, ist ihm überlassen, dabei ist alles erlaubt. Und wenn du dann korrekt kopierst, geht da auch nix verloren. > Das IAR sein eigenes Süppchen kocht siehst du schon an den Librarys: Die > heißen da .r43 (genau wie die Object-Files). Irgendwelche anderen Libs > einbinden: Fehlanzeige. Dann musst du den Sourcecode erst mit XAR zu ner > .r43 packen und dann einbinden. Meinst du Bibliotheken oder Quelltexte? Bibliotheken können heißen, wie sie wollen, bei mir z.B. .so oder .o, je nachdem wo und wie und warum. Quelltexte selbst dürfen auch heißen, wie sie wollen. Dass die meisten Compiler da Präferenzen haben, ist Kosmetik. Bei mir heißen die z.B. .C, .cc, .c++ oder .cpp.
Daniel wrote: > Ist das konform nach C++? Aber natürlich. Allerdings hat sich der Scope der Variablen i über die Jahre geändert: initial begann er ab der for-Anweisung und endete am Ende des Blocks, in dem sich die for-Anweisung befindet. Später hat man ihn eingeschränkt auf die for-Anweisung selbst. > In ANSI-C ist es soweit ich weiß nicht erlaubt. ANSI-C ist tot. Seit 1990 heißt das ISO-C, und ist 1999 als ISO/IEC 9899:1999 neu aufgelegt worden. In diesem Standard ist auch die Variablendeklaration innerhalb der for-Anweisung enthalten. Um zum Topic dieses Forums zurück zu kommen: auch GCC beherrscht das natürlich im C99-Modus (-std=c99 oder -std=gnu99). Nein, mit solchem Popelkram brauchst du dem IAR nicht kommen, in der Beziehung ist er sehr ordentlich. Er besitzt die sauberste C99-Implementierung, die ich bislang bei einem Compiler gesehen habe, einschließlich aller Winkelzüge in der Bibliothek. Ist auch kein Wunder, die Bibliothek haben sie von P. J. Plauger dazu gekauft, und der Mann sitzt in der WG14 des ISO-Kommittees... Da sie auch behaupten, eine Implementierung des EC++-Standards zu besitzen, würde ich ihnen das einfach mal abkaufen. > Das IAR sein eigenes Süppchen kocht siehst du schon an den Librarys: Die > heißen da .r43 (genau wie die Object-Files). Idiotischerweise je nach Zielplattform unterschiedlich. Für manche Controller können sie auch ELF/DWARF-2, aber auch für den AVR kochen sie ihr eigenes, undokumentiertes Objektformat. > Was willst du denn machen? Will sich deine Firma den anschaffen? Wenn > ja, bedenke, dass der nur mit nem USB-Dongle compilieren kann. Quatsch. Er kann nur mit einer gültigen Lizenz compilieren, und das Lizenzgeraffel bei denen ist in der Tat nervig (oder sogar noch schlimmer als nervig). Aber der USB-Dongle ist nur eine Variante, du kannst auch nodelocked-Lizenzen erhalten und auch ein Lizenzserver im Netz ist machbar. Der kann dann auch in der Arbeitsgruppe die Lizenz dynamisch zuteilen.
gast wrote:
> wo liegt der denn preislich?
Jenseits von Gut und Böse, irgendwo im vierstelligen Bereich.
au wei, da lebe ich bei C++ doch lieber mit den (kleinen) Einschränkungen des g++
Hallo, erstmal vielen Dank für die Antworten. Also es geht bei mir um eine Studienarbeit über den IAR Compiler. Deshalb ist es schwer auf alternativen...auszuweichen. Da ich die "großen" Unterschiede aus dem Datenblatt fast durch habe würden mich eben noch Dinge Interessieren die dort nicht genannt werden. Aber das hat eben so ein bisschen was von Nadel im Heuhaufen suchen... Viele Grüße, TomTom
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.