Existe-t-il un moyen de rendre C un peu plus conscient des types et d’assurer leur sécurité?
Considère ceci:
typedef unsigned cent_t;
typedef unsigned dollar_t;
#define DOLLAR_2_CENT(dollar) ((cent_t)(100*(dollar)))
void calc(cent_t amount) {
// expecting 'amount' to semantically represents cents...
}
int main(int argc, char* argv[]) {
dollar_t amount = 50;
calc(DOLLAR_2_CENT(amount)); // ok
calc(amount); // raise warning
return 0;
}
Est-il possible de faire en sorte que le code ci-dessus au moins déclenche un avertissement par le gcc?
Je sais que je peux utiliser les structures C pour encapsuler unsigned
s et obtenir le résultat souhaité. Je me demandais simplement s'il existait un moyen plus élégant de le faire.
Cela peut-il être un peu plus que ça?