Нет, это абсолютно невозможно.Если вы хотите использовать возвращаемое значение из функции дважды, вам нужно либо сохранить его в переменной, либо снова вызвать функцию.
В Bash есть функция, которая вам подходит.Там код выхода latest (возвращаемое значение) хранится во встроенной глобальной переменной, называемой $?
, но эта функция не существует в C, и я не вижу смысла ни в таком языке, как CПодобный фрагмент в Bash может выглядеть так:
if ! my_command; then
exit "$?"
fi
Но Bash - это совершенно другой язык.Я не вижу, как такая функция была бы хороша в C.
Я бы выбрал первый вариант с объявлением новой переменной.Второй вариант также подходит при условии , что функция не имеет побочных эффектов.
без определения новой переменной
Технически это возможновыполнить, повторно используя старую переменную, но это не хорошее решение.Не делайте этого.
Единственное, что вы можете сделать, чтобы предотвратить использование переменной в будущем, - это поместить все в область видимости.Это эквивалент C кода C ++, который Вирсавия показала в другом ответе.
{ // Extra brace
int response = id_data_valid(data);
if (response != 0) {
return response;
}}
// Now response has gone out of scope, so this would be an error
if(response == 0) {
С одной стороны, это хорошо, потому что он инкапсулирует временные переменные.Но с другой стороны, если вам действительно нужна эта конструкция, это очень хороший признак того, что вам следует переосмыслить свой дизайн.