I was wondering if it is possible in C (89/90) to chain function calls, and where it is defined in the C spec. I assume this isn’t possible since a google search reveals no mention of it.
I thought of this because of a related conversation with a friend of mine where he told me that given a function returning a struct, you cannot perform any operations on said struct within the same statement; instead, you have to assign the result of the function to a variable, and then manipulate the struct via the variable instead of directly from the function result itself. This leads me to believe that you can’t chain functions either, but I can’t seem to find these limitations discussed in the spec.
Edit : Sorry, I should have been specific on the return value. Assuming the function returns a function pointer, is it possible to dereference and call the result within the same statement, in fluent fashion?
For example, assuming getFunc returns a function pointer :
(*getFunc(getFuncParam))(otherFuncParam)
Or in the struct case, assuming a struct with an int member called count:
funcReturnsStruct(param).count++
Here’s what function chaining looks like in C:
Obviously, your friend is wrong. As long as the functions cooperate by accepting and returning the same type of value you can chain the calls all you like.
Contrast this with something like
The big difference is that in C (which has no encapsulation, hence no classes) functions have center stage while in more modern OO languages it’s objects that get more attention.
Update: Sure it’s possible to chain no matter what each function might return. For example:
See it in action.