Kann mir das mal jemand verständlich erklären?
Kann mit dieser Funktion floats ausgegeben werden?
Und falls nicht, welche Linkeroptionen sind dazu notwendig.
>int __attribute__((format (printf, 2, 3))) sprintf (char *buf, const> char *fmt, ...);>> Kann mir das mal jemand verständlich erklären?
int
Das ist der Rückgabetyp.
__attribute__((format (printf, 2, 3)))
Compilerspezifisches Attribut, das gcc dabei unterstützt, fehlerhafte
Formatstrings zu erkennen und entsprechende Warnungen auszugeben.
sprintf
Name der Funktion
(char *buf, const char *fmt, ...)
Die Parameterliste. Der erste ist der Zielpuffer, der zweite der
Formatstring, danach kommen optional weitere Parameter, die vom
Formatstring abhängen.
> Kann mit dieser Funktion floats ausgegeben werden?
Das kommt auf die verwendete libc an. Wenn sie das Standard-sprintf voll
unterstützt, ja.
> Und falls nicht, welche Linkeroptionen sind dazu notwendig.
Auch das hängt von der libc ab. Gibt es dazu keine Doku?
Gast wrote:
> Kann mir das mal jemand verständlich erklären?
Das GCC-Manual. Aber du musst das mit dem _attribute_ nicht
selbst verstehen, das geht nur den Compiler was an (damit er
die passenden Warnungen generieren kann).
Diese umständliche Deklaration wäre eigentlich gar nicht nötig,
da der Compiler für Standardfunktionen (sprintf ist eine) den
Test ohnehin durchführt.
> Kann mit dieser Funktion floats ausgegeben werden?
Meines Wissens beim MSP430-GCC (und seiner Bibliothek) nicht.
> Und falls nicht, welche Linkeroptionen sind dazu notwendig.
Da die Antwort auf obige Frage ,nein' lautet, hilft dir auch keine
Linkeroption.
Danke euch beiden.
>> Kann mit dieser Funktion floats ausgegeben werden?>Meines Wissens beim MSP430-GCC (und seiner Bibliothek) nicht.
Schade. Gibt es überhaupt eine Möglichkeit, floats auszugeben? Ich habe
im Archiv nur was über den AVR gefunden. Es geht um die Ausgabe von
floats auf einem alphanumerischem Display.
> wieviele Nachkommastellen sind denn nötig für die Ausgabe?
2 würden derzeit ausreichen. Bei kleineren µC habe ich immer ganzzahlig
gerechnet und dann das Komma nur reingeschoben. Jetzt habe ich 64kB
Platz.
Gast wrote:
> Jetzt habe ich 64kB Platz.
Und das heißt automatisch: Wenn ich den Platz habe, dann muss ich ihn ja
auch irgendwie vollkriegen?
Klar, bei PCs wird das so gemacht. Wenn ein neuer PC mit mehr Speicher
auf den Markt kommt, dann gibt es von Winzigweich auch gleich ein tolles
Betriebssystem, das zwar nicht wirklich mehr kann, als das
Vorgängersystem, aber wenigstens prozentual gesehen mindestens genauso
viel Speicher braucht wie das alte auf dem alten Rechner mit weniger
Speicher...
Außerdem benötigen Gleitkommarechnungen in erster Linie nicht nur mehr
Speicher, sondern v.a. mehr Rechenzeit. Bei einer geforderten Auflösung
von 2 Nachkommastellen würde ich deshalb (auch wenn ich noch so viel
Speicher habe) bei einem µC nach wie vor Festkommaarithmetik
verwenden...
Ich habe leider keine Ahnung, wer Winzigweich ist und was das Thema
Betriebssysteme mit dem beschriebenen Problem zu tun hat. Lass doch
deinen Frust woanders ab.
Aber ich entnehme deiner Antwort, dass du es nicht weißt und damit für
sinnlos empfindest. Solche Antworten sind nicht neu. Nun, da ich
genügend Platz zur Verfügung habe, kann ich ihn auch nutzen. Ich spare
nichts dabei, wenn er nur rumliegt. Ich bekomme kein Geld zurück, wenn
ich ihn nicht benutze. Ich kann den freien Speicher auch nicht
vermieten.
Zeitliche Probleme existieren nicht, der Zahlenwert soll alle paar
Sekunden aktualisiert werden. Rechenpower ist ebenfalls genügend da.
>> Jetzt habe ich 64kB Platz.> Und das heißt automatisch: Wenn ich den Platz habe, dann muss ich ihn> ja auch irgendwie vollkriegen?
Ich hätte gedacht, es heißt: "Wenn ich eh jede Menge Platz habe, brauche
ich keinen unnötigen Aufwand zu treiben, um Platz zu sparen". Das System
läuft mit halb leerem Speicher auch nicht besser.
> Klar, bei PCs wird das so gemacht.
Ja, leider. Im Unterschied zu der Mikrocontroller-Anwendung ist
allerdings im PC das Programm in der Regel nicht auf eine ganz
spezifische Hardware beschränkt und ist außerdem nicht das einzige
Programm, das läuft.
> Außerdem benötigen Gleitkommarechnungen in erster Linie nicht nur mehr> Speicher, sondern v.a. mehr Rechenzeit.
Die spielt bei einigen Anwendungen keine Rolle. Hier hat man in diesem
Fall, ebenfalls im Gegensatz zum PC, auch keinen Vorteil davon, sich die
zu sparen.