Next: , Previous: , Up: External Calls to C   [Index]


14.1.6 ick_next

ick_next is a macro that acts like the INTERCAL statement NEXT. Contrary to the other INTERCAL-like macros, it can be used in any function regardless of whether it was defined with ICK_EC_FUNC_START; however, it must still be used as a statement by itself, and a call to it looks like ick_next(expression);. The expression is the label to NEXT to, and works under the same rules as the expressions for ick_comefrom; it need not be constant (unlike in C-INTERCAL!), but must not have side effects, must not be negative, must fit into the range of an unsigned long, and is ignored if it is over 65535. If there happen to be multiple labels with the correct value at the time, the compiler will NEXT to one of them. Bear in mind that there is a limit of 80 entries to the NEXT stack, and that this limit is enforced.

If the resulting NEXT stack entry is RESUMEd to, the program will continue after the ick_next as if via setjmp, with all the usual restrictions that that entails; if the resulting NEXT stack entry is forgotten, then the ick_next call will never return. (Note that the ’as if via setjmp’ condition allows you to preserve the vales of auto and alloca-allocated storage as long as its value has not changed since the ick_next was called, which is a significantly more lenient condition than that normally imposed on such variables (see External Calls and auto).)