Tam Sürümünü Görmek İçin : "Expression must evaluate to a constant" hatası
ankakusu
17/06/2008, 12:01
Merhaba,
Ben c codunu pic programlamak için kullanmak istiyordum. Picclite derleyicisini kullanarak elimdeki kodu derlemeye çalıştım ancak bir hata veriyor. Verdiği hata da şu:
"Expression must evaluate to a constant"
diyor ve verdiği hata gösterdiği satırlar da 4. satır. İste allta yazıyorum:
(4. satır) #if defined(_12F629) || defined(_12F675)
(5. satır) #include <pic12f6x.h>
(6. satır) #endif
Bir bilginiz var mı acaba neden böyle oluyor olabilir?
() lerden kaynaklanıyor olabilir.
Birde #ifdef _12F629 || _12F675 şeklinde yazamıyomusun:ben c ye göre ifade ettim.pic bilmiyorum.
ankakusu
19/06/2008, 12:22
hgedek dediğin doğruymuş. parantezlerden çok if defined kelimesinin ifdef diye yazılması gerekiyormuş.
Benim c dili ile ilgili bi kaç sorum daha olacak:
#define ___mkstr1(x) #x
gibi bir satırda şu ___ ne anlama geliyor? Niye böyle bir şey kullanırız acaba?
ankakusu
19/06/2008, 12:54
Benim bir sorum daha olacak ben şu #if define 'ı #ifdef diye çevirince o hata düzeldi ancak bu sefer başka bir hata almaya başladım.
Verdiği hata:
"Undefined identifier" oluyor. Ve hata olarak gösterdiği satır da 51. satır. Altta o kod parçasını veriyorum:
(51) #if EEPROM_SIZE > 0
(52) #define __EEPROM_DATA(a, b, c, d, e, f, g, h) \
(53) asm("\tpsect eeprom_data,class=EEDATA,delta=2"); \
(54) asm("\tdb\t" ___mkstr(a) "," ___mkstr(b) "," ___mkstr(c) "," ___mkstr(d) "," \
(55) ___mkstr(e) "," ___mkstr(f) "," ___mkstr(g) "," ___mkstr(h))
(56) #endif
bir bilgisi olan var mı acaba?
quasimodo
19/06/2008, 14:41
#if defined _12F629 || _12F675
olmasin o?
___ kullanmanın ciddi bir sebebi varmı bilmem ama bunu sende kullanabilirsin ve genellikle bir format mantığı ile kullanırsın.Yani fonksiyonların isim baş harflerini büyük kullan falan gibi yani....
diğer sorunu pek anlamadım.yani
#define _EEPROM_DATA() .....
olsun demeyemi çalıştın nedir?
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.