#-lines are processed lexically with regard only to line numbers, and you can use them anywhere it makes sense to do so.

So the following is perfectly fine:
int variable[2];

void test(int *variable) // rename variable to anything you like, it has no effect
#define one variable[0]
#define two variable[1]

int main()
return 0;
The function test() does absolutely nothing and you don't need to call it to set "one" and "two". The above should print 5 (haven't done a run test).

The thing to remember about #defines is that they define symbols within the file from the line where they are defined to (a) the end of the file or (b) the line where they are #undef'd.