理解 C 中的“odr-use”
在 C 中,“一个定义规则”(ODR)的概念确保对于每个在多个编译单元中声明的实体,只存在一个定义。然而,确定何时需要定义可能会令人困惑。术语“odr-use”在这种情况下发挥作用。
根据 C 标准,变量或函数是 odr-used:
这个定义有点抽象,所以让我们简化它。 Odr-use 本质上意味着实体的使用方式必须在程序中的某个位置进行定义。这包括实际用法,例如调用函数或访问变量,以及潜在用法,例如成为重载决策的候选者。
对于类模板成员函数,它们仅被实例化(并因此定义)(如果它们是 ODR 使用的)。这意味着必须调用它们,或者必须使用虚拟成员函数来实例化类本身。
标准依赖于这一原则来防止不必要的实例化。例如,std::list::sort函数需要operator
理解 odr-use 对于避免与丢失相关的错误至关重要定义和多个编译单元中的多个定义。通过遵循这些规则,程序员可以编写健壮且可维护的 C 代码。
以上是什么是 C 语言中的 ODR 使用以及何时需要定义?的详细内容。更多信息请关注PHP中文网其他相关文章!