调用Structur指针错误:“预期标识符......”

时间:2018-03-01 09:32:34

标签: c pointers structure

我正在尝试运行一个小测试程序,但现在我陷入了一个非常奇怪的问题。我认为这是结构处理的一个简单问题,但我找不到错误的原因。我在帖子底部的简短示例中标记了有错误的行。

的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;

2 个答案:

答案 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}}