学过c语言,但是没有不懂那个#if #dlif 还在延时函数里面用(☆_☆)
发布网友
发布时间:2023-05-03 21:10
我来回答
共3个回答
热心网友
时间:2023-10-22 12:27
这个是预编译的写法,符合#if后面的条件后编译器才会编译,否则不会占用FALSH空间,
#if 相当于 if
#elif 相当于 else
#endif 表示上面的判断结束。
你这个程序的意思是当晶振频率是那个值则编译那个for循环,来达到不同频率都可以使用这一个函数来达到更精确的延时。追问和if else的区别就是不会占用空间吗?
热心网友
时间:2023-10-22 12:27
这个是条件编译
在编译的时候生效
FOSC是一个宏定义
如果 这个定义为 11059200L 那么 j循环到114
否则如果是12000000L j循环到123
否则 如果是24000000L j循环到249
如果是其它值,或者 FOSC没有定义
那么 默认114
应该是区分芯片的。追问那和if else有什么区别?
追答if else
是在运行的时候判断
而#if #else这样的 是在编译的时候判断。
前者占用运行时间 效率低
后者编译时固定,不灵活。
热心网友
时间:2023-10-22 12:28
用法跟if else 类似 只不过#if是预处理命令