構造体ポインタに記憶域を割り当てようとしました。ここに簡略化されたコードです - あなたは私が何を間違えたのか教えてくれますか?データ定義に型または記憶域クラスがありません
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を持っていません:\ユーザー\ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 Can5
警告 'packet_Tx' c:¥users¥blu¥documents¥avrstudio¥Can5¥Can5¥Can5.cの宣言で、2つのタイプのデフォルト値は「int」です。「packet_Tx」cの3つのタイプが競合します。c: \ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 2 Can5
エラー 'packet_Tx'の前回の宣言は、ここではc:\ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5です。 C 5初期警告18 13 Can5
キャストCなしポインタから整数を作る:\ユーザー\ブルの\ドキュメント\ avrstudio \ Can5 \ Can5 \ Can5.c 20 14 Can5
パケットの残りの部分は、packet_Txの割り当て行がコメントアウトされていれば問題ありません。ありがとう、たくさんの人。
:
main()
方法のトップへ:これらの2行を移動しますか?どのように伝えることができますか?後でpacket_ptで何をしましたか? – zmbq
あなたの例は100%正しいので、 "うまくいきませんでした"というのはやや曖昧です... Cで 'malloc()'呼び出しの戻り値をタイプキャストしないでください。 –
いいえ。 – asaelr