Gibt es eine Möglichkeit, C etwas mehr auf Typen aufmerksam zu machen und Typ-Sicherheit zu gewährleisten?
Bedenken Sie:Typ-Sicherheit in C
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;
}
Gibt es einen Weg, um den obigen Code zu machen at-dest Warnung durch den gcc zu erhöhen?
Ich weiß, ich kann C-Strukturen verwenden, um unsigned
s zu wickeln und das gewünschte Ergebnis zu erzielen, ich habe mich nur gefragt, ob es eine elegantere Möglichkeit war, es zu tun.
Kann es ein bisschen mehr sein?
Make 'cent_t' und' dollar_t' eine Struktur mit nur einem Mitglied? – Leandros
C ist nicht wirklich eine typsichere Sprache. Der einfachste Weg zur * Emulation * Typ-Sicherheit ist die Verwendung von Strukturen. –
Deklarieren Sie alle Ihre Funktionen vor der Verwendung (vollständige Liste der Funktionsargumente usw.). Übergeben Sie Strukturen und nicht grundlegende Typen (oder Typdefinitionen von Basistypen). Bevorzugen Sie Inline-Funktionen über Makros. Erhöhen Sie die Warnstufen Ihres Compilers. – Peter