#ifndef语句_单片机C语言
来源:百度知道 编辑:UC知道 时间:2024/06/07 20:58:17
请教高手 下边的这段程序为什么是对的
那是怎样执行的?
............
...........
........
int main(void)
{
#ifndef NO_UART_CHECK
/* Make sure Uart has been successfully initialised before running */
if (StreamUartSource())
#endif
{......................
......................
......................
}
return 0;
}
先谢了!
那是怎样执行的?
............
...........
........
int main(void)
{
#ifndef NO_UART_CHECK
/* Make sure Uart has been successfully initialised before running */
if (StreamUartSource())
#endif
{......................
......................
......................
}
return 0;
}
先谢了!
如果没有定义NO_UART_CHECK,则执行判断StreamUartSource(),为真的时候执行下面的语句,为假直接返回0;
如果定义了NO_UART_CHECK,直接执行花括号里的语句。
上面应该还有StreamUartSource()的实现吧。
如果没定义NO_UART_CHECK 的话,就检查 uart,只有StreamUartSource()返回非0才会运行下面大括号里的东西。 否则的话就跳过检查,直接运行
include <stdio.h>-------->如果stdio.h中包含预编译语句 #define NO_UART_CHECK
include <stdlib.h>------->或者如果stdlib包含预编译语句 #define NO_UART_CHECK
#define NO_UART_CHECK------->或者如果这里显式定义了NO_UART_CHECK(这就是定义方式)
int main(void)
{
#ifndef NO_UART_CHECK
if (StreamUartSource())//如果有上面三者任何一个,就表示定义了NO_UART_CHECK,那么#ifndef和#endif之间的部分将被编译器跳过,如果没有上面三者任何一个那么执行#ifndef和#endif之间的部分,注意这里是#ifndef不是#if或者#ifdef
#endif
{......................
}
return 0;
}
这解释你一定明白了。
上面三位说的都对,一楼的最容易理解。