Ik weet niet zeker of het kan wat ik wil.
Probleem is dit: Op een embedded systeem gebruiken we veel textstrings om debuginfo op een pc te zien. Hierbij worden ook variabelen gebruikt.
bijvoorbeeld zo:
DBG_INFO3("Dit is een infostring en dit zijn de variabelen: %s, %i, %s",string1, int1, string2);
DBG_INFO is een macro dat een functie aanroept die met sprintf hier een string van maakt en deze via UART naar de PC stuurt. Er zijn voor verschillende aantallen variabelen verschillende macro's.
Ik ben al een poosje bezig met zoeken en proberen, maar heb nog geen oplossing gevonden.
Dit lijkt me een leuke uitdaging voor echte programerende Tweakers.
Inmiddels zijn er meer dan 1000 van deze strings aanwezig.
Dit vreet veel te veel geheugen. Daarom willen we deze strings vervangen.
Een optie is om een precompiler te maken die deze strings voor het echte compilen vervangt door codes + de format specifiers en de codes + de string in een database of zoiets opslaat, zodat de PCTool deze codes terugvertaalt naar de infostring. De formatspecifiers blijven nodig om sprintf uit te kunnen voeren.
Maar een mooiere oplossing zou zijn om de strings met behulp van een macro te vervangen.
De bedoeling is dus een macro te maken, die de formatstring:
("Dit is een infostring en dit zijn de variabelen: %s, %i, %s"
vervangt door "__LINE__ __FILE__ %s%i%s" ,zodat de PCTool de file en het line number op kan zoeken en zo de echte info string weervind.
Probleem is dit: Op een embedded systeem gebruiken we veel textstrings om debuginfo op een pc te zien. Hierbij worden ook variabelen gebruikt.
bijvoorbeeld zo:
DBG_INFO3("Dit is een infostring en dit zijn de variabelen: %s, %i, %s",string1, int1, string2);
DBG_INFO is een macro dat een functie aanroept die met sprintf hier een string van maakt en deze via UART naar de PC stuurt. Er zijn voor verschillende aantallen variabelen verschillende macro's.
Ik ben al een poosje bezig met zoeken en proberen, maar heb nog geen oplossing gevonden.
Dit lijkt me een leuke uitdaging voor echte programerende Tweakers.
Inmiddels zijn er meer dan 1000 van deze strings aanwezig.
Dit vreet veel te veel geheugen. Daarom willen we deze strings vervangen.
Een optie is om een precompiler te maken die deze strings voor het echte compilen vervangt door codes + de format specifiers en de codes + de string in een database of zoiets opslaat, zodat de PCTool deze codes terugvertaalt naar de infostring. De formatspecifiers blijven nodig om sprintf uit te kunnen voeren.
Maar een mooiere oplossing zou zijn om de strings met behulp van een macro te vervangen.
De bedoeling is dus een macro te maken, die de formatstring:
("Dit is een infostring en dit zijn de variabelen: %s, %i, %s"
vervangt door "__LINE__ __FILE__ %s%i%s" ,zodat de PCTool de file en het line number op kan zoeken en zo de echte info string weervind.