In C, ci piace usare #define
o const
globali per evitare valori e stringhe di codifica hard.
Come possiamo evitare le stringhe hard-coding che devono essere formattate? Si consideri, ad esempio, la costruzione di un percorso file su un bus i2c in linux:
snprintf (dev, size, "/dev/i2c-%u", bus_no)
Non mi piace l'idea di aggiungere un #define I2C_BUS_FMT "/dev/i2c-%u"
all'inizio del file (o del file di intestazione), perché quando leggi snprintf (dev, size, I2C_BUS_FMT, bus_no)
non puoi vedere quanti e di quale tipo gli specificatori di formato sono ... devi prenderlo per fede che accetta un singolo unsigned int o go check.
Lo stesso problema si applica a const
globals.
Come posso evitare le stringhe di formattazione hard-coding senza spostare le informazioni importanti lontano dal luogo in cui è utilizzato?