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.