我自己也是刚开始接触STM32,目前正在专研代码,对于里面的东西确实有很多东西不太理解。本篇文章就是在查阅了大量资料后谈谈自己对于以下代码块的理解
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED0 PAout(8)//PA8
#define LED1 PDout(2)//PD2
void LED_Init(void);//LED初始化函数
#endif
对于这一块代码我觉得有以下几个点:
#开头的代码是预编译命令,根据名字也可以理解,就是在编译之前运行的那一部分代码,那大家可以想想既然是编译之前就会运行这一部分代码,那是不是可以利用起来规避之后可能会遇到的错误。
#ifndef可以理解为——if no define大致意思就是如果后面的东西(此处指__LED_H)没有定义,那么就执行后面的define命令了。
相反,如果ifndef后面的东西定义了,那么之后的所有代码都不会执行,比如:__LED_H如果定义了,那么到#endif之前的代码都不会执行。这其实就是在防止重复定义!!!
一般这种代码都是放在.h文件中,因为我们在include文件的时候可能会在不经意间重复引用同一文件(比如我们在B文件中include A和C文件,但是A文件自己可能就include C文件了呢!!!这样就会重复引用),那么编译的时候就会出现错误,如果代码量很大的话检查起来会是一件很麻烦的事。但是有了这种代码,我们就可以很轻松的解决问题,因为压根就不会把后面的代码编译哇!