IT-Lexikon › Programmierung › ODR

ODR

Programmierung Svenska → Aktualisiert: 2026-09-13

Die Regel, dass alles im Programm genau einmal definiert werden darf, und dass alles, was mehrfach definiert werden darf, überall identisch definiert sein muss.

Eine Klasse oder eine Inline-Funktion darf in mehreren Übersetzungseinheiten auftauchen, aber jede Definition muss aus denselben Tokens bestehen und dasselbe bedeuten. Das Unangenehme ist die Formulierung im Standard: Verstöße gegen die Regel sind ungültig, ohne dass eine Diagnose verlangt wird. Der Compiler sieht immer nur eine Datei, und der Linker sieht nur gemanglte Namen — definieren also zwei Dateien dieselbe Klasse unterschiedlich, typischerweise weil sich ein #define oder eine Packing-Direktive zwischen zwei Bibliotheken unterschied, wählt der Linker stillschweigend eine der beiden Definitionen aus und verwirft die andere. Das Ergebnis ist ein Programm, das funktioniert, bis jemand die Link-Reihenfolge ändert. Werkzeuge gibt es: ASan hat eine Prüfung dafür, ebenso lld und gold.

← Zurück zum Lexikon