#-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:
Code:
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()
{
variable[0]=5;
printf("%d\n",one);
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.