全局变量、本地变量
静态本地变量:static 变量名
具有全局的生存期,函数内的局部作用域
# 表示该条语句为编译预处理指令
编译预处理指令包括:宏定义指令(#define)、文件包含指令(#include)、条件编译等
宏定义:
#define 宏名 字符串
功能:编译时将程序中的宏名全部用相应字符串替换
#define PI 3.14 /不带参数的宏定义;
#define cube(x) (1*(x)*(x)*(x)) /整体加括号;每一个参数加括号
内置的宏定义
__LINE__:在源代码中插入当前源代码行号;
__FILE__:在源文件中插入当前源文件名;
__DATE__:在源文件中插入当前的编译日期
__TIME__:在源文件中插入当前编译时间;
__STDC__:当要求程序严格遵循ANSIC标准时该标识被赋值为1;
宏定义可以构建的复杂,甚至产生函数;
大程序结构:多个源代码文件
#include <文件>:
将文件中的全部文本复制过来
“”自己建立的 <>编译器自带的标准库
头文件.h
内部存放声明(函数原型、变量声明等声明),需要调用函数时include .h;预编译时会将函数原型复制过来,从而保证函数类型一致
条件编译,标准头文件结构,保证不会重复定义
头文件.h
//------------max.h-------------
int max(int a,int b);
extern int i;//extern表示变量声明
主函数.c
//----------main.c------------
#include <stdio.h> //只是预编译时将input、printf 的函数原型复制过来;
//<>让编译器在指定目录去找;编译器知道自己标准库的指定目录;
#include "max.h"
//""要求编译器去.c所在的目录找,没有再去指定目录找;
int main(void)
{
int a=5;
int b=6;
printf("%d\n",max(a,b));
return 0;
}
//------------max.c------------
#include "max.h"
int max(int a,int b){
return a>b?a:b;
}