Wenn Ihr Code in der "großen Datei" und dem "viele Dateien" -Ansatz zu 100% identisch wäre, würde der Hauptunterschied darin bestehen, dass Adressen von Variablen und Funktionen durch den Linker aufgelöst werden als der Compiler. Dies sollte normalerweise zu genau derselben Binärdatei führen.
Es gibt jedoch Architekturen mit "kurzen relativen Adressierungsmodi" (Motorola 68k ist ein Beispiel) für Aufrufe und Referenzen, bei denen der "große Dateiansatz" tatsächlich zu (etwas) kleinerem Code und Daten führen könnte. Der Compiler kann solche kurzen Adressierungsmodi normalerweise nicht in Module einfügen, die zum Verknüpfen vorgesehen sind, da zur Kompilierungszeit nicht bekannt ist, wie weit die Referenz im resultierenden Programm entfernt sein würde.
Also, abhängig von der CPU, die Sie verwenden, könnten Sie tatsächlich ein paar Bytes gewinnen.
Nein. Die Menge an Code und globalen Daten ist mindestens gleich. Möglicherweise müssen Sie Ihre Anwendung neu gestalten, um leichter zu sein. –
Unter der Annahme, Bare-Metal, Mainstream-Mikrocontroller-Anwendung. Um RAM zu sparen, konzentriere dich darauf, häufige Anfängerfehler wie die Verwendung des Heaps, die Verwendung von stdio.h oder die Verwendung von Gleitkommazahlen zu entfernen. Wenn Sie eines davon in Ihrem Programm finden und es entfernen, werden wahrscheinlich große Mengen an RAM freigesetzt. – Lundin
Alles was ich mir vorstellen kann ist, dass der Pfadname bei mehreren Dateien wahrscheinlich länger sein würde, aber ob relevant unterschiedlich, wer weiß .. –