It's true that a function can only return one value, so it requires one more layer of abstraction in order to "return" multiple values. This is probably what he meant by "trickery".
The first thing I can think of is that you can return a custom type with two fields for each value. Or, if you're returning two ints that are less than 2^16, you can use bit shifting\masking techniques to pack the shorts into one int and return that (and then unpack them afterwards). You could also use a bank.
Anyway, I prefer the custom type method. No matter what you do, though, another layer of abstraction means more processing/muddling.
The first thing I can think of is that you can return a custom type with two fields for each value. Or, if you're returning two ints that are less than 2^16, you can use bit shifting\masking techniques to pack the shorts into one int and return that (and then unpack them afterwards). You could also use a bank.
Anyway, I prefer the custom type method. No matter what you do, though, another layer of abstraction means more processing/muddling.