Her for döngüsü için bir yerel yada gloabal değişken kullanmak program uzadıkça zahmetli ve riskli oluyor. Başka yerde kullandığım bir değişkeni fark etmeden yeni yazdığım döngüde de kullanabiliyorum. Bu zamanla takibi zahmetli ve zor hale geliyor. Aşağıdaki tanımlamayı java kabul ediyor ama kullandığım derleyici olan mikroc pro for arm'de yaptığımda kabul etmedi. Buna benzer bir yöntem için ne tavsiye edersiniz?
Yapmayı istediğim şey;
for( int i =0 ; i<100 ; i++)
{
~~~~~
~~~~
~~~~~~
}
Mikroc C89 standardını destekliyor sanırım. for içinde değişken tanımlamak için en az C99 veya C++ olması lazım.
"MikroC Pro for PIC" de kabul etmiyor.
Belki derleyici ayarlarından C99 standartını seçmek mümkün olabilir. Bir araştırmak lazım.
{
int i;
for(i =0 ; i<100 ; i++){~~~~~~~~~ ~~~~~~}
}
hayirli olsun. :)
Güzel çözüm optimus : )). Scope tan çıkınca zaten olmayacak
Teşekkür ederim
@OptimusPrime çok iyi oldu.
İki farklı fonksiyonun içerisinde aynı isimle tanımlanmış yerel değişkenler birbirleriyle çakışır mı?
Hayır, çakışmazlar. Scope'ları farklıdır çünkü. Ancak aynı isimle bir üst scope'ta tanımlanmış bir değişken var ise eğer onu bastırırlar.
int i;
void main() {
i=5;
{
int i;
for( i=100;i<105;i++)
{
}
}
i++;
while(1){}
}
hocam yukarıdaki şekilde hem global hem de scop içinde tanımlanmış i değişkeni var. for döngüsü bitip scop içinden çıkınca i değişkeni i++; kodundan sonra 106 değerini alıyor. yani scop içinde tanımlama mümkün ama daha önce tanımlanmış aynı isimde bir değişken var ise onun değerini değiştiriyor. debugger den bakınca iki "i" değişkeni de aynı bellek adresinde tanımlanıyor.
Şimdi dikkatli okudum
@Tagli hocam da aynı şeyi demiş zaten.
@Tagli @tekosis hocam teşekkürler.