Hallo, angenommen ich benutze zum programmieren (c) eine lib, welche mir 5 Funktionen zur Verfügung stellt. func1, func2, func3, func4, func5. Wenn ich jetzt in meinem Projekt aber nur func2 benutze. Wie viel speicher wird verwendet? Von der kompletten lib? Oder nur, was für func2 benötigt wird? Wenn zweiteres, wäre es dann besser func2 neu zu implementieren (angenommen man würde es gleich machen wie in der lib)? Dann hätte man ja definitiv nur den Speicherbedarf für func2. Mir geht es nur darum, um mal zu wissen, wie viel speicher von einer lib benötigt wird.
Lukas schrieb: > angenommen ich benutze zum programmieren (c) eine lib, welche mir 5 > Funktionen zur Verfügung stellt. > func1, func2, func3, func4, func5. > Wenn ich jetzt in meinem Projekt aber nur func2 benutze. Wie viel > speicher wird verwendet? Von der kompletten lib? Oder nur, was für func2 > benötigt wird? Hängt vom Linker ab und davon, ob linktime-Optimierungen aktiv/erlaubt/möglich sind. Aber selbst wenn man den optimalen Fall annimmt, dass also diese Optimierungen möglich und erlaubt sind, wird immer noch genug Schotter über bleiben. Denn typisch stellen solche API-Funktionen nur eine kleinen Teil des Codes dar. Der ganze dicke Rest ist auch dann nötig, wenn du nur eine davon verwendest...
Probier's aus. Es gibt Leute die verwenden einzig zum Debuggen eine printf(myfloatADC) um einen ADC Wert auszugeben, und wundern sich weswegen nichts mehr sonst reinpasst.
Normalerweise: Alle Funktionen und Variablen die zusammen mit func2 in einer .c-Datei stehen + Alle .c-Dateien, in denen Funktionen oder Variablen sind, die direkt oder indirekt verwendet werden. Schau Dir den Quelltext der standardlib an. Deshalb ist abs() als Dreizeiler im einer eigenen .c. Bei printf zieht man dagegen einen ganzen Sumpf mit, z.b Floatingpoint-Mathe. Oder muss per linker eine Version aus 3 oder so auswählen.
Einzig zuverlässige Möglichkeit ist Ausprobieren: linken und die Memory Map studieren. Leider ist selektives Linken aus der Mode gekommen, weil man ja immer GByte-weise Speicher hat, manche Systeme linken eine komplette Laufzeit-Bibliothek dazu egal was gebraucht wird, und dann ist Hello World mehrere MByte gross. Es ist bei mir für Steuerungen z.B. öfter vorgekommen, dass ich Multiplikation gebraucht habe, Division usw. aber nicht. Das muss man dann meistens per Hand regeln. Georg
georg schrieb: > Das muss man > dann meistens per Hand regeln. deswegen nutze ich arduino nano die float LIB (sprintf, printf) nie und rechne mit ganzzahligen Integer, mV cV dV, das Komma wenn benötigt kann man auch per Text einsetzen
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.