Macro expansion across multiple files

No, the array is declared (using extern) in the header file, but defined in the *.ino file. My understanding is that setup() and loop() must be defined within an ino file, so that's the file where the data definition occurs and is the file that defines setup() and loop().