Я имел и с тех пор исправил что-то вроде следующего кода:
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, которая предотвращала любую ошибку или предупреждение.
Ни один из этихпорази меня как вероятность.Что здесь происходит?