【发布时间】:2011-10-20 21:52:12
【问题描述】:
我曾经并且已经更正了类似以下代码的内容:
class SomeClass {
public:
static int AdjustValue(float input);
static int DoSomethingWithAdjustedValue(int adjustedInput);
static int DoSomethingWithNormalValue(float input) {
DoSomethingWithAdjustedValue(AdjustValue(input);}
};
所以DoSomethingWithNormalValue 显然缺少return,但 GCC 并没有为它生成错误或警告。我打电话给DoSomethingWithNormalValue 的地方得到了正确的返回码。我可以想到两种解释:
GCC 中有一些扩展可以识别内联函数,这些函数包装了其他函数并传递返回值。
由于未定义行为的幸运/不幸表现以及 GCC 中阻止任何错误或警告的错误,返回代码被传递。
我觉得这些都不太可能。这是怎么回事?
【问题讨论】:
-
提高警告级别。它会警告你。
-
当您缺少
return语句时,什么是“正确的返回码”?
标签: c++ gcc android-ndk undefined-behavior