XC8 derleyici ve struct yapisinda sorun oluyor.

Başlatan justice_for_all, 24 Temmuz 2012, 21:40:56

justice_for_all

Merhaba arkadaslar XC8 derleyicisi ile bir ornek yapayim dedim ama C18 yaptigim bir ornegi XC8 ile yapamadim.

bir struct yapimiz olsun .

typedef struct _usb_data_packet
{
	bilgi		  bilgi2;
	unsigned char stepx;
	unsigned char stepy;
	unsigned char stepz;
	unsigned char steps;
}usb_data_packet;


ve bu yapiyi kullandigim bir fonksiyon

void motor_don(usb_data_packet *packet11)
{

	unsigned int tur;
	unsigned char temp=1;
	

}/////


simdi gelelim sorunuma normal c18 derleyicisinde packet11-> veya packet11. deyince struct yapisinin elemanlari geliyor ama bu derleyicide getiremedim bi turlu.

ama...

motor_don@packet11.bilgi2.dirx=0;

bu sekilde yazinda noktadan sonra struct elemanlarini gosteriyor ama bu seferde hata veriyor yani struct yapisina bi turlu ulasamadim.Bu konuda yardimci olabilecek arkadas var mi ?

Ayrica bu XC nin yapisi c18 e gore biraz daha farkli gibi yalnismiyim.

buda C18 ile yaptigim proje kullanim sekli ayni ama XC8 de yapamadim ayni seyi.
void constspeed_xy( DATA_PACKET *temp)
{
	
	BOOL  axis;
	BYTE  DelayXY;
	UINT16 StepXY,StepMore,i;

	if ( temp->motor.xaxis_delay  < temp->motor.yaxis_delay)    // Zamanlama olarak, büyük zaman sabiti eksenlerin ortak hızı olarak atanıyor.
   	{
   		DelayXY = temp->motor.yaxis_delay;
   	}
}
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Tagli

Ben XC8'de struct'larla ilgili bir sorun yasadigimi hatirlamiyorum. Oncelikle, packet11 bir pointer oldugu icin, ondan sonra gelen elemana -> ile ulasman gerekiyor. bilgi de bir struct sanirim. Bu durumda erisimin packet11->bilgi2.dirx = 0; seklinde olmasi gerekir sanirim, cunku bilgi2 bir pointer degil.

Ornegini vedigin sekildeki @isareti ile kullanimi bilmiyorum. Burada ne demek istedin?

Noktadan sonra ic elemanlar gelmiyor derken otomatik tamamlamayi mi kastediyorsun? Yani kod derlemesinde sorun yok ama sadece otomatik tamamlama mi calismiyor? Kullandigin IDE hangisi? Eski MPLAB 8 mi yoksa yeni MPLAB X mi? Ben XC8'i eski MPLAB 8 ile kullanmayi denemedim hic.
Gökçe Tağlıoğlu

justice_for_all

ben mplab 8 ile calistiriyorum sorun ondan olabilirmiyi acaba.

evet otomatik tanimlamadan bahsediyorum normalde o isaretlerden sonra struct elemanlari orda gozukmesi gerek ama cikmiyo.cikmazsa cikmasin dedim ben tamamladim ama bu kezde hata veriyor .


motor_don@packet11.bilgi2.dirx=0;


bu yazim sekli ise mplabda ctrl + tab tusu yazilimindaki tum degiskenleri gosterir.ama motor_don fonksiyonunun icindeki degiskenleri nedense o isaret ile gosteriyor.

yani
motor_don@tur gibi ..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Tagli

Ctrl + Tab kullanimini bilmiyordum. Derleyicinin verdigi hata nedir? Dedigim gibi ilk isaretin -> ikincinin . olmasina dikkat ediyor musun?
packet11->bilgi2.dirx=0;
Gökçe Tağlıoğlu

justice_for_all

#4
tamam oldu simdi ben tamamladim kodu derledi dediginizi gibi
temp->motor.stepx=0;
su sekilde yapinca oldu.
ama otomatik tamamlama hala cikmiyor mplabx de cikiyomu peki o.


simdi mplabx de denedim otomatik tamamliyor sorun cozuldu tesekkurler.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay