2014-10-12 3 views
1

Я просто хочу, чтобы сделать что-то вроде этого:Может ли `return` вернуть` break` в C?

int moduleDecision(int ModuleSelect) 
{ 
    if (ModuleSelect == Nmodules) 
    { 
     ModuleSelect == 0x00; 
     return (break); 
    } 
    else 
    { 
     ModuleSelect = ModuleSelect + 0x01; 
     return ModuleSelect; 
    } 
} 

Я звоню эту функцию внутри большего switch, поэтому я хочу, чтобы иметь возможность выйти из выключателя, если ModuleSelect == 0x00.

Почему это не работает?

+2

Точно, какое значение вы предлагаете «break» в качестве результата функции? (и ... * no *, это не то, как работает язык). – WhozCraig

ответ

7

Номер break - это заявление, а не выражение. Это не имеет значения. Это, конечно, не int. Этот код не сможет скомпилировать.

Одна вещь, которую вы, возможно, сможете сделать, - это указать конкретное значение для возврата в специальный случай. В вызывающем коде проверьте значение этого значения и break.

2

Нет, вы не можете. Но в вызывающей функции вы можете проверить возвращаемое значение, а если оно равно нулю (например), вы делаете оператор break.

2

№. «Разрыв» не является int, поэтому он не может быть возвращен вашей функцией.

Если 0 является особым значением, почему бы не использовать это в качестве случая в вашем заявлении на коммутатор? Просто верните 0 или другое специальное значение и обработайте соответственно.

1

Если вы вызываете функцию только в одном месте вашего кода, вы можете заменить вызов фактическим кодом, а затем перерыв работает как обычно.