调用Structur指针错误:“0”;需要一个标识符……”;
我正试图运行一个小测试程序,但现在我陷入了一个非常奇怪的境地。我认为这是一个简单的结构处理问题,但我找不到错误的原因。我已经在文章底部的简短示例中标记了带有错误的行 main.c调用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
#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
的任何代码可见
xMessagexMessage
是一种类型而不是变量。总的来说,这是一个草率的代码。你为什么突然使用#include
?什么是function1(void)
?你费心数括号了吗?诸如此类。你是对的,我试着把它用一个简短的例子加以说明,但也犯了一些错误。。对不起,下次我会准备好:)function1 one正在接收“pxRxedMessage”在这种情况下我如何调用xmessage?在xmessage.usr\u loop\u cfg=0x40
xMessagexMessage
是一种类型而不是变量。总的来说,这是一个草率的代码。你为什么突然使用#include
?什么是function1(void)
?你费心数括号了吗?诸如此类。你是对的,我试着把它用一个简短的例子加以说明,但也犯了一些错误。。对不起,下次我会准备好:)function1 one正在接收“pxRxedMessage”在这种情况下我如何调用xmessage?哦,对不起,这只是一个简短示例的键入失败here@Bernd所以你重新输入你的代码(!?)。有没有想过复制/粘贴?如果我在这里发布代码,这将是一个巨大的帖子,问题是关于结构处理,我不认为代码的其余部分感兴趣整个代码是关于一个LPC项目的xQueueReceive,带有一个FreeRTOS和一个要实现的队列:)哦,对不起,这只是一个简短示例的键入失败here@Bernd所以你重新输入你的代码(!?)。有没有想过复制/粘贴?如果我在这里发布代码,这将是一个巨大的帖子,问题是关于结构处理,我不认为代码的其余部分感兴趣整个代码是关于一个LPC项目的xQueueReceive,有一个FreeRTOS和一个要实现的队列:)哦,非常感谢:)我误解了我同事昨天说的话。哦,非常感谢:)我误解了我同事昨天说的话。