The limit of two derefence operations per expression means that there should
be no more than two star operators to the left or to the right of an assignment operator,
or in any single conditional expression.
It should be possible for a static analyzer to determine in all cases which
function is being called, if the call is made through a function pointer.
It may be acceptable to allow cases where the number of possible functions
that may be called is larger than one, provided it does not affect the
precision of the code analysis itself. This means that it can depend on the
capabilities of a specific static analyzer what liberties can be taken with
the use of function pointers.
Additionally, though, it is wise to keep function pointer use to a minimum,
and to restrict to simple cases, to make sure that also humans can determine
accurately and with modest effort which functions may be evoked.