gpt4 book ai didi

c++ - 两个函数声明共享一个定义,这合法吗?

转载 作者:太空狗 更新时间:2023-10-29 20:59:26 26 4
gpt4 key购买 nike

另一个新手问题:

int foo();  // outer foo function
int main() {
int foo(); // inner foo function
cout << foo() << endl;
}

int foo() { // one definition
return 42;
}

根据我的理解,函数或对象的内部声明将隐藏外部声明(如果有的话)。
所以上面的outer foo()和inner foo()应该是两个不同的函数。
但他们共享一个定义,这似乎令人困惑。两个不同的函数共享一个定义是否合法?两个不同的对象变量怎么样?(这是 C++ 问题,但语法似乎也适合 C。)

编辑:

使用指向函数的指针验证了外部和内部 foo 是相同的函数:

pf_outer = 0x400792

pf_inner = 0x400792

最佳答案

内部 foo 只是同一 foo() 的另一个向前减速。考虑以下示例:

 int foo();
int foo();

int main() {
cout << foo() << endl;
}

int foo() { // one definition
return 42;
}

这将编译并运行并且没有歧义,因为编译器将使用相同的代码替换相同函数的使用。

可以重新声明函数。

关于c++ - 两个函数声明共享一个定义,这合法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688557/

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