【发布时间】:2019-07-23 11:20:35
【问题描述】:
当像这样的非 void 函数没有返回任何内容时,我遇到了崩溃:
bool ClassA::foo() {
//---do something---
}
void ClassA::foo2() {
foo();
}
请注意,这个函数的返回值没有被使用。并且崩溃是 100% 可重现的。它每次都崩溃。理想情况下它应该产生一个警告,如果我不使用返回值,它不应该崩溃。
此 C++ 代码在 Android NDK 版本 r19 上编译。
同样的代码在 NDK-r15c 上也能正常工作。
最近有什么变化吗?
【问题讨论】:
-
所以你有一个崩溃,通常这是由你的代码中的错误引起的。为什么你认为是这个问题造成的,你有什么证据?
-
您需要向我们展示a Minimal, Reproducible Example。
-
@john 因为当我输入返回语句时,崩溃就消失了。我已经尝试在很多地方更改代码。所以它不应该是悬空指针等的情况
-
@user18853 正如链接所解释的(不知道它是否准确),这是 C 的规则,而不是 C++。
-
“我认为如果你使用返回值,那么它就是一个未定义的行为。”不正确。即使不使用返回值也是未定义的行为。
标签: c++ c++11 android-ndk