我正在尝试运行一个小测试程序,但现在我陷入了一个非常奇怪的问题。我认为这是结构处理的一个简单问题,但我找不到错误的原因。我在帖子底部的简短示例中标记了有错误的行。
的main.c
#include "init.h"
void function1(void)
{
xQueueReceive(handle, &( pxRxedMessage ), ( TickType_t ) 10 ); //expected expression before ')' token
printf("%u\n", pxRxedMessage->usr_loop_cfg);
}
INIT.C
#include "init.h"
struct AMessage
{
uint8_t usr_loop_cfg;
};
void create(void)
{
xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
xMessage.usr_loop_cfg = 0x40; // Error: error: expected identifier or '(' before '=' token
pxMessage = & xMessage;
xQueueSend( xQueue, ( void * ) &pxMessage, ( TickType_t ) 0 );
}
init.h里
#include "queue.h"
extern void create(void);
typedef struct AMessage xMessage;
typedef struct AMessage *pxRxedMessage;
typedef struct AMessage *pxMessage;
答案 0 :(得分:2)
看起来你已经把typedef
与声明变量的东西混淆了。这一行例如
typedef struct AMessage xMessage;
未创建名为xMessage
的变量。它正在创建一个新的数据类型xMessage
,它是struct AMessage
的别名。
如果你想要一个你写的变量
xMessage my_message;
或
struct AMessage my_message;
您还需要将struct AMessage
的定义移到您的头文件中 - 它需要对您使用xMessage
的任何代码可见。
答案 1 :(得分:0)
)
function1(void)
receive(handle, &( pxRxedMessage ), ( TickType_t ) 10 );
{{1}}