Visual Studio 2010'da C yazıyorum. Derleyici satır içi değişken bildirimleri kullanmama izin vermek istemiyor. Aşağıdaki kod bir hata üretir:Microsoft C Derleyici: Satır içi değişken bildirimi?
unsigned int fibonacci_iterative(unsigned int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
unsigned int prev_prev = 0; // error
unsigned int prev = 1; // error
unsigned int next = 0; // error
for (int term_number = 0; term_number < n; term_number++) {
unsigned int temp = prev_prev + prev;
prev = next;
prev_prev = prev;
next = temp;
}
return next;
}
Hata:
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
neden oluyor? Derleyiciyi bu kadar katı yapmamak için bir ayar var mı?
Biraz dağınık, değil mi? Bu değişkenlere referans veren tüm işlevin geri kalanı, bloğun içinde olmalıdır, böylece değişkenler kapsam dışında kalmaz. Aşırı kullanılırsa, bu _very_ dağınık ve brace-ağır koduna yol açacaktır. –
@Chinmay: Bu bağlıdır. Evet, büyük bloklar için dağınıklığa son verebilir, ancak bazı değişkenlerin sadece çok sınırlı bir kapsam gerektirdiği küçük bloklar için de yararlı olabilir. – jamesdlin
Bu ne kadar taşınabilir? Bu sorun için soruyormuş gibi görünüyor. –