bit RB7@ (unsigned)&PORTB*8+7; komutu

Başlatan LukeSkywalker, 27 Ağustos 2011, 11:31:47

LukeSkywalker

Evet bu ben de bu şekilde yaptım. Ama Hi-Tech 9.50 var bende ve
char asd[]="ali";
yazınca hata vermeden derledi?

LukeSkywalker

peki bu şekilde nasıl kullanılabildi? Burada da const olarak tanımlamamız gerekmez mi?

yani
const char asd[]="Veli"; 
 

şeklinde tanımlamak gerekmez mi?

LukeSkywalker

asıl sormak istedşğim şu idi

char ali[]="veli"; 
şeklinde tanımlarken de hata vermesi gerekmez mi derleyicinin?
sonuçta "veli" bir const ifade. Ama atandığı değişken const değil.

LukeSkywalker

hocam ama pek çok kitapta pointer örneği anlatılırken  şu şekilde yapılmış:
#include <stdio.h>

int j, k;
int *ptr;

int main(void)
{
    j = 1;
    k = 2;
    ptr = &k;
    printf("\n");
    printf("j has the value %d and is stored at %p\n", j, (void *)&j);
    printf("k has the value %d and is stored at %p\n", k, (void *)&k);
    printf("ptr has the value %p and is stored at %p\n", ptr, (void *)&ptr);
    printf("The value of the integer pointed to by ptr is %d\n", *ptr);

    return 0;
}


görüldüğü üzere

pointerı const olarak tanımlamadığı halde

ptr = &k;


şeklinde değer atmış içine..


Kadir Can(16F84)

#19
Hocam o kodda bir sorun yok.
Orada k'nın adresi atanıyor.
Integer, const olmadığı için işaretçinin const olmasına gerek yok.
String atamak istediğimizde tür uyumunu sağlamak gerekiyor.
String C dilinde const char[] şeklinde tanımlanır.İşaretçilerde const char *ptr; şeklinde kullanılır.
Dolayısıyla string atanacağı zaman işaretçi const olmalı.

Kadir Can(16F84)

gerbay hocam,
Bir üstteki mesaj bana mı yoksa maytere'ye mi?
Sanırım maytere'ye ama bir yanlışım varsa doğrusunu öğrenmek isterim.

LukeSkywalker

Hocam derleyicinin sürümünden kaynaklanan sıkıntılar da olmuyor değil.
Aynı şekilde  yani
veri_al(char asd[])
{
 ....
}


fonksiyonuna derleyicinin daha yüksek bir sürümünde şu şekilde

veri_al("ali");


verisini gönderdiğimde derledi ve sorunsuz çalıştı...

Kadir Can(16F84)

Normalde uyarı vermesi gerekirdi.
Derleyicilerde bu tarz değişiklikler olabilir; ama önemli olan ANSI C kurallarını bilmektir.