Область действия препроцессора #define в C

Область действия #define - до конца файла. Но с чего это начинается. В основном я пробовал следующий код.

 #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);}

Результатом вышеупомянутой программы оказывается

3.140000
3.141416

С учетом предварительной обработки для main значение pi должно быть 3,141516 и вне основного 3.14. Это неверно, но объясните, пожалуйста, почему.

14
задан Brian Tompsett - 汤莱恩 14 March 2016 в 19:56
поделиться