#define
的範圍一直到文件末尾。但是它從哪裏開始。 基本上我嘗試了下面的代碼。#define預處理器的範圍C
#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
考慮預處理對於pi的主值應爲3.141516 和外主3.14。這是不正確的,但請解釋原因。
請記住它是PREprocessing。它不知道或關心你的代碼的結構,在#define的情況下,它正在按照它看到它們的順序進行替換,這個替換與最新的#defined變量的值相關。 – Joe 2011-06-16 22:55:03
這段代碼實際上是格式不正確的:除非定義相同,否則不能'定義與當前定義的另一個宏具有相同名稱的宏。所以,第二個'#define pi'使程序不合格。你需要先#undef pi'。 – 2011-06-16 23:05:48
* #define的範圍直到文件末尾。*否,文件結尾**或#undef **具有相同的宏標識符。 – Jens 2013-11-14 21:10:32