调用Structur指针错误:“0”;需要一个标识符……”;

调用Structur指针错误:“0”;需要一个标识符……”;,c,pointers,structure,C,Pointers,Structure,我正试图运行一个小测试程序,但现在我陷入了一个非常奇怪的境地。我认为这是一个简单的结构处理问题,但我找不到错误的原因。我已经在文章底部的简短示例中标记了带有错误的行 main.c #include "init.h" void function1(void) { xQueueReceive(handle, &( pxRxedMessage ), ( TickType_t ) 10 ); //expected expression before ')' token

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

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);
}
初始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 );
}
初始h

#include "queue.h"

extern void create(void);

typedef struct AMessage xMessage;

typedef struct AMessage *pxRxedMessage;

typedef struct AMessage *pxMessage;

“')”标记之前的
预期表达式

一对多
函数1(无效)


“')”标记之前的
预期表达式

一对多
函数1(无效)


看起来您将
typedef
与声明变量的内容混淆了。比如这条线

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

如果你想要一个变量,你可以写

xMessage my_message;


您还需要将
struct-AMessage
的定义移动到头文件中-它需要对使用
xMessage

的任何代码可见。看起来您将
typedef
与声明变量的内容混淆了。比如这条线

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

如果你想要一个变量,你可以写

xMessage my_message;



您还需要将
struct AMessage
的定义移动到头文件中-它需要对在
xMessage.usr\u loop\u cfg=0x40中使用
xMessage

的任何代码可见
xMessage
xMessage
是一种类型而不是变量。总的来说,这是一个草率的代码。你为什么突然使用
#include
?什么是
function1(void)
?你费心数括号了吗?诸如此类。你是对的,我试着把它用一个简短的例子加以说明,但也犯了一些错误。。对不起,下次我会准备好:)function1 one正在接收“pxRxedMessage”在这种情况下我如何调用xmessage?在
xmessage.usr\u loop\u cfg=0x40
xMessage
xMessage
是一种类型而不是变量。总的来说,这是一个草率的代码。你为什么突然使用
#include
?什么是
function1(void)
?你费心数括号了吗?诸如此类。你是对的,我试着把它用一个简短的例子加以说明,但也犯了一些错误。。对不起,下次我会准备好:)function1 one正在接收“pxRxedMessage”在这种情况下我如何调用xmessage?哦,对不起,这只是一个简短示例的键入失败here@Bernd所以你重新输入你的代码(!?)。有没有想过复制/粘贴?如果我在这里发布代码,这将是一个巨大的帖子,问题是关于结构处理,我不认为代码的其余部分感兴趣整个代码是关于一个LPC项目的xQueueReceive,带有一个FreeRTOS和一个要实现的队列:)哦,对不起,这只是一个简短示例的键入失败here@Bernd所以你重新输入你的代码(!?)。有没有想过复制/粘贴?如果我在这里发布代码,这将是一个巨大的帖子,问题是关于结构处理,我不认为代码的其余部分感兴趣整个代码是关于一个LPC项目的xQueueReceive,有一个FreeRTOS和一个要实现的队列:)哦,非常感谢:)我误解了我同事昨天说的话。哦,非常感谢:)我误解了我同事昨天说的话。