main()函数是否已使用?

时间:2019-01-13 07:25:36

标签: c++ language-lawyer main one-definition-rule

main()函数是odr-used吗?例如,在这样的简单程序中:

int main()
{
}

1 个答案:

答案 0 :(得分:6)

不,不是。不在您的简单程序中。

  

[basic.def.odr]

     

3一个函数,其名称显示为可能值   如果表达式是唯一的查找结果或   一组重载函数([basic.lookup],   [over.match],[over.over]),除非它是纯虚函数并且   其名称未明确限定,或者表达式形成一个   指向成员([expr.unary.op])的指针。

main不会出现在可能评估的表达式中,因此不会被过度使用。此外,我们必须考虑以下几点:

  

[basic.start.main]

     

3不得在程序内使用main函数。

这是否适用于简单的调用 main或任何用途,还是值得商,的,但这无疑限制了您在任何程序中只能使用main的选项。

在分析odr-use时值得牢记的是,odr-uses实体(或不使用它们)是程序。外部力量(例如使用main作为切入点的实施方式)无需争论。