Подтвердить что ты не робот

Возвращение из функции void

Это более правильный способ возврата из функции:

void function() {
  // blah some code
}

ИЛИ

void function() {
  // blah some code
  return;
}

Обоснование для второго пути:

  • Он более четко выражает намерения разработчиков.
  • Это помогает обнаружить конец функции в момент компиляции:

Предположим, что у вас есть такой сценарий: у вас есть куча функций, и вы должны ввести некоторый код в конце этих функций. Но по некоторым причинам вы не хотите/не можете изменять такое огромное количество функций. Что вы можете сделать по этому поводу? Return и macro, например:

#include<stdio.h>

#define MAX_LINES 1000
#define XCAT(a,b) a##b
#define CAT(a,b) XCAT(a,b)
#define return returns[__LINE__] = 1;\
        if (returns[__LINE__])\
           {printf("End of function on %d line.\n",__LINE__);}\
        int CAT(tmp,__LINE__); \
        if ((CAT(tmp,__LINE__)=returns[__LINE__], returns[__LINE__] = 0, CAT(tmp,__LINE__)))\
              return

static int returns[MAX_LINES];


void function1(void) {
    return;
}

void function2(void) {
    return;
}

int main()
{
    function1();
    function2();

    return 0;
}
4b9b3361

Ответ 1

Вернее, так что сделайте выбор. Пустой оператор return; предоставляется для возврата в функцию void из другого места, кроме конца. Нет другой причины, по которой я верю.

Ответ 2

Единственной причиной возврата в функцию void будет выход из-за некоторого условного утверждения...

void foo(int y)
{
    if(y == 0) return;

    // do stuff with y
}

Как говорится, когда код заканчивается, он заканчивается. Нет необходимости в явном возврате в конце.

Ответ 3

Первый способ "более правильный", какое намерение может быть выражено? Если код заканчивается, он заканчивается. Это, по-моему, довольно ясное.

Я не понимаю, что может быть путаным и нуждаться в разъяснении. Если нет никакой конструкции цикла, то что может произойти иначе, чем функция перестает выполняться?

Меня бы раздражало такое бессмысленное дополнение return в конце функции void, поскольку оно явно не имеет никакой цели и просто заставляет меня почувствовать, что оригинальный программист сказал: "Я был в замешательстве об этом, и теперь ты тоже можешь! что не очень приятно.

Ответ 4

Старый вопрос, но я все равно отвечу. Ответ на заданный вопрос заключается в том, что голый возврат является избыточным и его следует оставить без внимания.

Кроме того, предлагаемое значение ложно по следующей причине:

if (ret<0) return;

Переосмысление зарезервированного слова C как макроса - плохая идея на первый взгляд, но это конкретное предложение просто неподходящее, как аргумент, так и код.

Ответ 5

void является унарным оператором. Он может использоваться в самозависимых функциях. Точно так же, как с +, -, ~,! Операторы

void function(){
    console.log("test");
}();

!function(){
    console.log("test");
}();