Escopo do pré-processador #define em C

O escopo de#define é até o final do arquivo. Mas de onde isso começa. Basicamente, tentei o seguinte código.

 #include<stdio.h>
 #include<stdlib.h>
 #define pi 3.14
 void fun();
 int main()
{
 printf("%f \n",pi);
 #define pi 3.141516
    fun();
return 0;
}
void fun(){
printf("%f \n",pi);}

A saída do programa acima parece ser

3.140000
3.141416

Considerando o pré-processamento para main, o valor de pi deve ser 3,141516 e fora main 3,14. Isso está incorreto, mas por favor explique o porquê.

questionAnswers(5)

yourAnswerToTheQuestion