On 12 October 2017 at 18:09, Toshi Morita via gcc <gcc@gcc.gnu.org> wrote: > This isn't a GCC question specifically - it's more of a C language question.
And so is off-topic here. > I'm involved in a discussion involving C language function pointers. > The other party claims calling functions through a function pointer is > "undefined behavior" because it's not specifically mentioned in the C > language spec. That's entirely incorrect. All function calls are through function pointers, see 6.5.2.2 p1: "The expression that denotes the called function (92) shall have type pointer to function returning void or returning a complete object type other than an array type. (92) Most often, this is the result of converting an identifier that is a function designator." i.e. in foo(args) the function foo is converted to a function pointer, and that is the expression that denotes the called function. See 6.3.2.1 p4 as well.