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

问题描述 投票:0回答:2

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

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;
c pointers structure
2个回答
2
投票

看起来你把typedef与声明变量的东西混淆了。这一行例如

typedef struct AMessage xMessage;

没有创建一个名为xMessage的变量。它正在创建一个新的数据类型xMessage,它是struct AMessage的别名。

如果你想要一个你要写的变量

xMessage my_message;

要么

struct AMessage my_message;

您还需要将struct AMessage的定义移动到头文件中 - 它需要对使用xMessage的任何代码可见。


0
投票

expected expression before ')' token

在你的)一对多function1(void)

receive(handle, &( pxRxedMessage ), ( TickType_t ) 10 );
© www.soinside.com 2019 - 2024. All rights reserved.