gpt4 book ai didi

c++ - 头文件/cpp 文件中定义的函数表现不同

转载 作者:行者123 更新时间:2023-11-27 23:32:58 24 4
gpt4 key购买 nike

文件:A.h

class A
{
public:
struct x X;
int show()
{
x.member_variable ? 0: -1;
}
};

现在,如果 A.cpp 被编译,其中包括 A.h(实际上在一个巨大的项目空间中),我们会看到 x.member_variable 值不符合预期。但是,如果删除 show() 方法并将其放在 A.cpp 中,则代码表现良好 - 这意味着 x.member_variable 值是正确的。

这样的事情怎么会发生 - 我们从 objdump 中看到的一件事是,如果函数在 A.h 中定义,则该方法被视为内联函数,否则如果在 A.cpp 中定义则不是?

代码如何表现完全不同?

最佳答案

您是否忘记了return

int show()
{
return x.member_variable ? 0: -1;
}

没有它,代码仍然合法,但返回的值将有些随机。行为与您放置代码的位置之间可能恰好存在相关性。

关于c++ - 头文件/cpp 文件中定义的函数表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3586242/

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