爲什麼我的normals_since函數看不到我的全局變量會跳躍? 我不能相信在main中聲明的變量在整個程序中是不可用的,那就是封裝或隱藏什麼的意思?是否可以像main.z或_ main _z這樣的祕密方式訪問? 我的gcc錯誤>>C函數看不見全局變量
yrs_since.c: In function ‘normals_since’:
yrs_since.c:40:9: error: ‘leaps’ undeclared (first use in this function)
yrs_since.c:40:9: note: each undeclared identifier is reported only once </p>
for each function it appears in
possible answer
looks like if I want all functions to see the vars, I have to move
int z; //place holder
int leaps;
int normals;
的主要之外,在頂部他們宣佈了#define語句
#include stdio.h>
#include stdlib.h>
#define START_GREG 1582
int yrs_since(int year); //type-declare the function
int leaps_since(int years);
int normals_since(int years);
int main(int argc, char* argv[]){
int year = 1599; //local var
int z; //place holder
int leaps;
int normals;
z = yrs_since(year); //call the function
leaps = leaps_since(z); //leap years move the doomsday fwd by 2 days
normals= normals_since(z); //normal years it adjusts one day
printf("blah blah %d,", z);//print the result
printf("leap years since 1582:-->> %d <<", leaps);
printf("normal years since 1582:-->> %d <<", normals);
return EXIT_SUCCESS;
}
int yrs_since(year){
int x;
x=year-START_GREG;
return x;
};
int leaps_since (years){
return years/4;
};
int normals_since(years){
int x;
x=years-leaps;
return x;
};
'leaps'甚至不是一個全局變量。 – nhahtdh
不要沒有終止函數的定義與';'尾'}'後,它是無效的C. – ouah
您可能希望你的問題格式化到的東西是更可讀的,只有代碼的相關部分,並明確了哪些代碼在哪個源文件中。 – che