Hallo Forum, ich habe auf einem STM32F103 ein Webserver implementiert. Nun würde ich gerne eine Datei (in diesem Fall die CSS Datei) als const char[] einbinden, so dass diese mit in den Flash wandert. Die Webseite ist nicht so umfangreich, dass ich einen externen Speicher nutzen müsste. Aktuell habe ich die css Datei als const char hinterlegt. Hier ist jedoch das Problem, dass ich jede Zeile mit " beginnen und beenden muss, damit der Compiler es als String erkennt. Gibt es eine Möglichkeit eine komplette Datei als const char[] einzubinden?! Vielen dank und viele Grüße Fabian
nicht getestet const char bla[]=" #include "datei.css" "
Du kannst eine beliebige Datei in eine Object-Datei konvertieren (objcopy) und einfach mit in dein Projekt linken; die Adressen gibt es dann in Symbolen, die du benutzen kannst. Das kannst du im Makefile auch automatisieren. Die Datei einfach per #include reinziehen könnte Probleme mit dem Escaping geben, außerdem macht das dem Compiler mehr Arbeit.
nicht"Gast" schrieb: > nicht getestet > > const char bla[]=" > #include "datei.css" > " Das geht nicht, die String-Literale umfassen immer nur eine einzelne Zeile. Ich würde versuchen das irgendwie mit deinem Build-System zu lösen.
Jo habe ich beim testen auch gerade gemerkt. Also externes Tool wie xxd oder selbst machen, siehe http://stackoverflow.com/questions/410980/include-a-text-file-in-a-c-program-as-a-char
1 | #include <stdio.h> |
2 | |
3 | int main() { |
4 | int c; |
5 | while((c = fgetc(stdin)) != EOF) { |
6 | printf("'\\x%X',", (unsigned)c); |
7 | }
|
8 | printf("'\\0'"); // put terminating zero |
9 | }
|
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.