Comprendre l'utilisation de l'ODR en C
Dans le contexte de la programmation C, le concept « d'utilisation de l'ODR » surgit souvent lors des discussions en classe fonctions membres du modèle.
La règle de définition unique (ODR) garantit qu'il existe une définition unique et cohérente pour chaque entité dans toutes les unités de traduction d'un programme. L'utilisation ODR définit quand une entité doit avoir une définition fournie, par opposition à une simple déclaration.
Selon la norme C, une fonction non surchargée est utilisée par odr si :
Utilisation ODR et fonctions des membres du modèle de classe
Pour les membres du modèle de classe fonctions, la règle d'utilisation ODR signifie qu'elles ne seront instanciées que si elles sont :
Cette règle garantit que les fonctions membres du modèle ne sont instanciées que lorsqu'elles sont réellement nécessaires. Par défaut, le compilateur n'instanciera pas les fonctions membres inutilisées, ce qui permettra d'économiser du temps de compilation.
Utilisation ODR et plusieurs unités de compilation
Lors de l'utilisation de plusieurs unités de compilation, le compilateur doit assurez-vous que toutes les entités utilisées par odr sont définies exactement une fois. Il y parvient grâce au concept de « modèles principaux ». Un modèle principal est la première instanciation d'un modèle dans une unité de traduction. Toutes les instanciations de modèles ultérieures dans d'autres unités de traduction sont considérées comme des instanciations secondaires.
Le modèle principal est chargé de fournir la définition des entités utilisées par odr. Si une fonction membre est utilisée par l'ODR mais n'est pas appelée dans le modèle principal, elle doit quand même être déclarée avec une définition pour satisfaire l'ODR.
Instanciation de toutes les fonctions membres
L'instanciation explicite d'un modèle de classe garantit l'instanciation de toutes les fonctions membres, y compris les fonctions utilisées par odr qui ne sont pas appelées. Cela garantit que la définition complète est disponible pour toutes les unités de compilation, évitant ainsi d'éventuelles erreurs de liaison. Cependant, il n'est pas toujours nécessaire ou efficace d'instancier les fonctions membres inutilisées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!