В настоящее время я пытаюсь выяснить способ выхода из цикла for
из функции, вызванной в этом цикле. Я знаю о возможности просто вернуть функцию значение, а затем проверить на определенное значение и затем сломать, но я хотел бы сделать это изнутри функции напрямую.
Это связано с тем, что я использую встроенную библиотеку для определенного аппаратного обеспечения, которое требует, чтобы функция-подпись моей функции выглядела следующим образом:
void foo (int passV, int aVal, long bVal)
Я знаю, что не использовать возвращаемое значение очень плохая практика, но, несмотря на все обстоятельства, меня заставляют, поэтому, пожалуйста, несите меня.
Рассмотрим следующий пример:
#include <stdio.h>
void foo (int a) {
printf("a: %d", a);
break;
}
int main(void) {
for (int i = 0; i <= 100; i++) {
foo(i);
}
return 0;
}
Теперь это не скомпилируется. Вместо этого я получаю ошибку компиляции следующим образом:
prog.c: В функции 'foo': prog.c: 6: 2: ошибка: оператор break не внутри цикла или коммутатора break;
Я знаю, что это значит (компилятор говорит, что разрыв в foo()
не находится в цикле for
)
Теперь, что я могу найти по стандарту относительно инструкции break, это:
Оператор break приводит к тому, что элемент управления переходит к следующему утверждению самое внутреннее приложение while, do, for или switch. синтаксис просто break;
Учитывая, что моя функция вызывается из цикла for, почему оператор break не выходит из указанного цикла? Кроме того, возможно ли реализовать что-то вроде этого без первой функции возврата?