gpt4 book ai didi

c++ - 几个函数的指针

转载 作者:可可西里 更新时间:2023-11-01 18:20:43 27 4
gpt4 key购买 nike

是否可以保证仅名称不同(参数和返回类型也不同)的函数不能在 C 和 C++ 中共享相同的地址?我在标准中没有看到任何相关内容。

#include <cassert>

void foo() {}

void bar() {}

int main()
{
assert(foo != bar);
}

最佳答案

C++11 标准说

5.10 Equality operators
Pointers of the same type (after pointer conversions) can be compared for equality. Two pointers of the same type compare equal if and only if they are both null, both point to the same function, or both represent the same address (3.9.2).

如果您没有任何指向函数的指针,它们可能具有相同的地址,但我们不知道。如果您正在比较指向两个不同函数的指针,则它们不能比较相等。


造成混淆的一个原因可能是已知 MSVC 编译器会组合模板函数的代码,这些模板函数恰好为不同类型(如 intlong)生成相同的机器代码).这不合规。

但是,这是针对具有不同 签名的函数,而不是这个问题的具体内容。

关于c++ - 几个函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12167220/

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