gpt4 book ai didi

c++ - 函数定义先于命名空间中的声明

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:56 25 4
gpt4 key购买 nike

以下代码,其中函数定义先于其声明,在 VS .NET 2008 和 Cygwin gcc 4.8.2 中编译。合法吗?

namespace N
{
int init() // Definition appears first
{
return 42;
}
}

namespace N
{
int init(); // followed by declaration
const int x = init();
}

int main()
{
}

编辑

我想这与下面的编译没有太大区别

void foo()
{
}

void foo();

int main()
{
}

最佳答案

[basic.def]/1:

A declaration (Clause 7) may introduce one or more names into a translation unit or redeclare names introduced by previous declarations.

如果声明与之前的名称一致,则可以随时(重新)声明一个名称。在这种情况下,它是一致的,因为两个声明中 init 的类型都是 int()。所以是的,代码格式正确。

关于c++ - 函数定义先于命名空间中的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com