Why compiling structure in Keil works, and not in SW?
I can’t say why it works with Keil, but from what I can see, the fputc() function defines parameter as type FILE, whereas the struct declaration in the header is named __FILE (two leading underscores).
inputFunctionPointer and outputFunction pointers are members of the __FILE struct, but are _not_ members of FILE.
I would also advise that __FILE be declared as a type, like this:
typdef struct
{
...
}
__FILE;