Le plus simple ne serait-il pas plutôt de faire de la génération de code, pour obtenir un code propre sans se prendre la tête avec ces typedefs et macros qui semblent donner mal à la tête aux gens ici présents ?
Exemple simple (j'ai vérifié la validité du template et de la sortie, c'est juste pour l'idée) de code Python :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| template = '''#include <stdlib.h>
#type# * #initials#allocate(size_t length)
{
#type# *ptr;
// Malloc blabla
return ptr;
}
// Autres fonctions
void #initials#deallocate(#type# * ptr)
{
free(ptr);
}
'''
type = 'unsigned long long'
generated = template.replace('#type#', type)
initials = ''.join([word[0] for word in type.split()]) + '_'
generated = generated.replace('#initials#', initials)
print generated |
Donne en sortie :
$ python generator.py
#include <stdlib.h>
unsigned long long * ull_allocate(size_t length)
{
unsigned long long *ptr;
// Malloc blabla
return ptr;
}
// Autres fonctions
void ull_deallocate(unsigned long long * ptr)
{
free(ptr);
}
Partager