我試圖將存儲分配給結構指針。這裏是缺陷的代碼 - 你能告訴我我做錯了什麼嗎?數據定義沒有類型或存儲類
can.h對應
#ifndef CAN_H_
#define CAN_H_
typedef struct {
u32 id;
u32 mask;
char length;
char data[8];
char status;
} CAN_PACKET;
project.c
#include "can.h"
CAN_PACKET *packet_Tx, *packet_Rx;
CAN_PACKET packet1, packet2;
packet_Tx = (CAN_PACKET*)malloc(sizeof(CAN_PACKET)); /* line 20 in text */
packet_Tx = &packet1; packet_Rx = &packet2;
int main(void)
{
while(1)
{
}
}
我得到這些錯誤/警告:
警告1個數據定義沒有類型或存儲類C:\ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 2 Can5
錯誤3'packet_Tx'的衝突類型c:\ user5 \ Can5 \ Can5.c c:\ users \ blu5 \ \ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 2 Can5
錯誤4以前的'packet_Tx'聲明在這裏是c:\ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5。 C 18的13 Can5
警告5初始化時將指針整數,未作鑄造C:\用戶\藍光\文件\ AVRSTUDIO \ Can5 \ Can5 \ Can5.c 20 14 Can5
當packet_Tx賦值行被註釋掉時,代碼的其餘部分符合要求。非常感謝你們。
什麼沒有工作?你怎麼知道?之後你對packet_pt做了什麼? – zmbq 2012-02-22 22:02:04
你的例子是100%正確的,所以「沒有工作」有點含糊......不過,請不要在C中對'malloc()'調用的返回值進行類型轉換。 – 2012-02-22 22:06:48
不,你沒有。 – asaelr 2012-02-22 22:14:20