个人笔记,仅供参考
1.头文件只用于声明
使用如下格式:
// 预编译头
#ifndef __LCD12864_H
#define __LCD12864_H
#endif
规范:前面两_,后面一个_,此外(_LCD12864_H,__LCD12864_H_,_LCD12864_H_)都能编译通过
声明是告诉其他源文件,本源文件中的内容。
// 预编译头
#ifndef __LCD12864_H
#define __LCD12864_H
// 包含其他头文件
#include "sys.h"
#include "includes.h"
// 重定义类型
typedef unsigned char u8;
// 声明宏函数
#define FUN(n) USER_SELFFUN(n) //
// 声明外部变量
extern unsigned char ext_arr[];
extern unsigenf char ext_val;
// 声明结构体类型
typedef struct NAME{
int member1=0;
float member2=1.2f;
};
// 声明源文件中的函数
void user_function(void);
#endif
2.源文件只用于定义
变量赋值,定义结构体类型变量,实现函数,数组赋值,都属于定义。
源文件是具体定义,一般是分配内存的过程。
// 只包对应的头文件
#include "user.h"
// 定义数组变量
ext_arr[2] = {1,2};
// 定义无符号变量
ext_val= 120;
// 定义结构体类型的变量
NAME user_struct = {1,5.0};
//定义函数
void user_function(void)
{
.....
}
3.单片机工程结构
----------------main.c--------------
#include "includes.h"
int main()
{
while(1);
}
---------------include.h------------
#ifndef __INCLUDES_H__
#define __INCLUDES_H__
// 系统
#include <stdio.h>
#include <string>
......
// 用户
#include “delay.h”
#include "user.h"
......
#endif
---------------user.c----------------
#include "user.h" // 只包含对应头文件
// 定义
---------------user.h----------------
#ifndef __USER_H
#define __USER_H
#include "includes.h"
// 声明
#endif