为什么我的 normals_since 函数看不到我的全局变量跳跃?我不敢相信在 main 中声明的变量在整个程序中不可用是什么封装或隐藏或什么意思?它是否可以通过诸如 main.z 或 _ main _z 之类的秘密方式访问?我的 gcc 错误>>
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;
在 main 之外并在 #defines 之后将它们声明在顶部
#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;
};