If that's not enough I'll try my best to explain here:
I'm trying to setup an array for my custom frameworks initialization functions to insert themselves into ready for calling by a single function, I'm trying this way so that I can avoid using #ifdef to include and then call these functions.
Yes. The header is only declaring it though. Do not assign the array in the header.
The array also needs to be defined in the implementation file. Whenever other modules wish to use zx__Init, they need to link to the module that defines it, not just include the header.
While I don't think it's necessary (through some grace of the C standard)(I might also be wrong), you should declare the array in the header with extern.