我这里有一个非常简单的问题。
我有一个全局变量的小宏,它在我的标题中定义如下:
extern bool uart_message_received;
#define get_uart_message_rec() uart_message_received;
在我的 C 文件中,我想像这样访问文件:
bool uart_message_received = 0;
void foo(void)
{
bool test;
test = get_uart_message_rec(); // Works fine
if(get_uart_message_rec()==0) // Doesn't work
{
//...
}
}
我有点困惑为什么 if
中的条件不起作用。我是做错了什么,还是违反了某些 C 指令?
最佳答案
#define get_uart_message_rec() uart_message_received
// ^ no semicolon
宏替换将按原样替换文本,包括 ;
在您的情况下。这将导致 if
情况下的语法错误。
关于if 条件下的 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15053975/