First off. I think that this question was correctly put in the Displays Forum.
If you do ask the same question in two Forums please SAY SO. Ideally with clickable links.
I was fascinated by WHY the forward declarations were failing.
A typical sketch has:
#include headers
#defines
global variables
function definitions
The Arduino kludge phase identifies forward declarations and inserts them just in front of the first function definition.
So you can solve the OP's problem by simply placing a "function" immediately after the includes:
void dummy_function(void) { }
This ensures that you get
#include headers
forward function declarations
dummy_function definition
#defines
global variables
function definitions
As a general rule function declarations might contain as yet undefined typedefs
As we have seen, you can't reference function pointers until they have been declared.
Personally I dislike the kludging of forward references. It is NOT part of C++.
I do like the parsing of .INO files to determine INCLUDE paths and LIBRARY paths.
I presume that IDE v1.8.9 has altered the positioning of forward declarations.
David.