2013-01-07 27 views
5

ilgili sorularda hiçbir şey bulamadı. Büyük olasılıkla süper çaylak, ama yine de isteyeceğiz/Benim .h dosyasında aşağıdaki var: Bu, bir mikroişlemci için kodC: typedef union

typedef union _API_Packet_0x90{ 
    uint8_t packet[26]; 
    struct _pack_struct { 
     uint8_t start; 
     uint8_t length[2]; 
     uint8_t addr64[8]; 
     uint8_t addr16[2]; 
     uint8_t options; 
     uint8_t rfData[4]; 
     uint8_t chksum; 
    }; 
} API_Packet_0x90; 

API_Packet_0x90 ap90; 

, ben xc8 toolchain (eski Hi Tech C kullanıyorum).

xbee_api.h:19: warning: missing basic type; int assumed
xbee_api.h:19: error: ";" expected
xbee_api.h:19: warning: missing basic type; int assumed
xbee_api.h:21: warning: missing basic type; int assumed

ve bu

Ben uint8_t düşündüm, bu yüzden #include <ctypes.h> eklendi (çok fazla hatalar) gider: derleyici diyor. Hayır! Ben adlarıyla ilgili olduğunu düşündüm, bu yüzden

typedef union { 
    uint8_t packet[26]; 
    struct _pack_struct { 

    }; 
} API_Packet_0x90; 

veya

typedef union { 
    uint8_t packet[]; 
    struct _pack_struct { 

    }; 
} API_Packet_0x90; 

veya başkaları gibi oyunların her türlü çalıştı. Hiç bir şey yardımcı olmaz. Sözdizimini düzgün takip ettiğime inandığım için sıkıştım. Herhangi bir yardım?

+4

Tanımlanan eklenmiş uint8_t ekini nasıl biliyorsunuz? Belki 'typedef unsigned char uint8_t;' yazmayı deneyin. Bu tanımdan önce ... ya yardımcı olacak ya da onu yeniden tanımladığınızdan şikayet edecektir. – Matthieu

+0

Muhtemelen 'uint8_t' için #include ' seçeneğine ihtiyacınız var. –

+0

'xbee_api.h: 19:' Ayrıca kodunuzun satır numaralarını da verebilir misiniz? en azından ilk satırın sayısı? Böylece bildiğimiz, hangi hattın sorun verdiğini. – anishsane

cevap

6

uint8_t olmayan ctype.h içinde (ne ctypes.h, böyle bir başlık var), stdint.h bulunur. Bu üstbilginin C standardının daha yeni bir sürümünü takip eden bir derleyici kullanmalısınız (C99 veya C11 standartları).

+0

Süper aptal bir hata olduğunu düşündüm. Öyleydi. Teşekkür ederim. – dccharacter

+0

Veya bilinmeyen veri türü için kendi tanımınızı ekleyin. C standardının daha yeni bir versiyonunu takip eden bir derleyiciyi kullanma zorunluluğu yoktur. Veya veri türünü derleyicinin bildiği başka biriyle arayın ve değiştirin. Seçimleriniz var. –

+0

@dwelch Tabii ki kendi türünü kendiniz tanımlayabilirsiniz, bununla çelişecek bir şey söylemedim. Fakat stdint.h başlıklarını bulmak için, yazımda yazdığım gibi daha yeni bir derleyici kullanmalısınız. – Lundin