第十二章 全局变量、宏、大程序结构习题
12-0、静态本地变量
#include <stdio.h>
int f(void);
int main(int argc, char const *argv[])
{
f();
f();
f();
return 0;
}
int f(void)
{
static int all = 1;//静态本地变量,实际上是特殊的全局变量,即全局生存期,本地作用域
printf("in %s all=%d\n",__func__,all);
all += 2;
printf("agn %s all=%d\n",__func__,all);
return all;
}
12-1、编译预处理和宏
(1)编译预处理指令
(2)#define
(3)宏
#include <stdio.h>
#define PI 3.14159
#define FORMAT "%f\n"
#define PI2 2*PI // pi * 2
#define PRT printf("%f ",PI);\
printf("%f",PI2);
int main(int argc, char const *argv[])
{
printf(FORMAT,PI2*3.0);
PRT;
return 0;
}
(4)预定义的宏
#include <stdio.h>
/*__FILE__:文件名
__LINE__:行号
__DATE__:日期
__TIME__:时间*/
int main(int argc, char const *argv[])
{
printf("%s:%d\n",__FILE__,__LINE__);
printf("%s:%d\n",__DATE__,__TIME__);
return 0;
}
(5)带参数的宏
-
像函数的宏
#include <stdio.h> //注意宏定义不能加分号 #define cude(x) ((x)*(x)*(x)) int main(int argc, char const *argv[]) { int i=0; scanf("%d",&i); printf("%d\n",cude(i)); return 0; }
-
错误定义的宏
-
带参数宏的原则
12-2、大程序结构
(1)多个源代码文件
(2)#include误区
(3)" "与< >
-
用法:
max.h 自己建的头文件
-
全局变量的声明(extern)
写在头文件 max.h里
double max(double a, double b); extern int gall;//声明一个int型的全局变量gall