Ik probeer een module te maken welke het mogelijk maakt om configuraties uit een bestand te lezen.
De configuratie van deze module staat in ROM geheugen. Dat is logisch, want deze veranderd toch niet.
Dit is de configuratie stuct, waarvan dus een array bestaat.
Het lezen van de instellingen op deze manier gaat prima.
Het probleem is dat de standaard instellingen niet alleen bestaan uit string literals, maar ook floats en integers of whatever. Het initialiseren van de void * met een "string literal" is geen probleem. Immers word deze in ROM gelinkt en vervangen voor het adres. Net als je char * initialiseert.
Maar hoe initialiseer je een void pointer met adres van een integer literal? Kan dat wel?
Dit alles is in C(99).
De configuratie van deze module staat in ROM geheugen. Dat is logisch, want deze veranderd toch niet.
Dit is de configuratie stuct, waarvan dus een array bestaat.
C:
1
2
3
4
5
6
7
| typedef struct { char *element; // Pointer naar elementnaam string literal char *format; // Pointer naar scanf format string literal uint16_t size; // Lengte elementnaam (sizeof(element)) void *target; // Doellocatie in ram waar de instelling moet komen void* defaultvalue; // Pointer naar literal met standaardwaarde voor element } element_t; |
Het lezen van de instellingen op deze manier gaat prima.
Het probleem is dat de standaard instellingen niet alleen bestaan uit string literals, maar ook floats en integers of whatever. Het initialiseren van de void * met een "string literal" is geen probleem. Immers word deze in ROM gelinkt en vervangen voor het adres. Net als je char * initialiseert.
Maar hoe initialiseer je een void pointer met adres van een integer literal? Kan dat wel?
Dit alles is in C(99).