Ответ 1
Вернее, так что сделайте выбор. Пустой оператор return;
предоставляется для возврата в функцию 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;
}
Вернее, так что сделайте выбор. Пустой оператор return;
предоставляется для возврата в функцию void
из другого места, кроме конца. Нет другой причины, по которой я верю.
Единственной причиной возврата в функцию void будет выход из-за некоторого условного утверждения...
void foo(int y)
{
if(y == 0) return;
// do stuff with y
}
Как говорится, когда код заканчивается, он заканчивается. Нет необходимости в явном возврате в конце.
Первый способ "более правильный", какое намерение может быть выражено? Если код заканчивается, он заканчивается. Это, по-моему, довольно ясное.
Я не понимаю, что может быть путаным и нуждаться в разъяснении. Если нет никакой конструкции цикла, то что может произойти иначе, чем функция перестает выполняться?
Меня бы раздражало такое бессмысленное дополнение return
в конце функции void
, поскольку оно явно не имеет никакой цели и просто заставляет меня почувствовать, что оригинальный программист сказал: "Я был в замешательстве об этом, и теперь ты тоже можешь! что не очень приятно.
Старый вопрос, но я все равно отвечу. Ответ на заданный вопрос заключается в том, что голый возврат является избыточным и его следует оставить без внимания.
Кроме того, предлагаемое значение ложно по следующей причине:
if (ret<0) return;
Переосмысление зарезервированного слова C как макроса - плохая идея на первый взгляд, но это конкретное предложение просто неподходящее, как аргумент, так и код.
void является унарным оператором. Он может использоваться в самозависимых функциях. Точно так же, как с +, -, ~,! Операторы
void function(){
console.log("test");
}();
!function(){
console.log("test");
}();