2012-11-26 11 views
6

Bir fortran dosyasının hata ayıklamasıyla ilgili bir sorum var. Böylece d (*) ile otomatik olarak bildirdim. Ancak, hata ayıklama sırasında ve dizinin denetimi sırasında sadece diğer 60 dizisini değil, dizinin ilk sayısını gösterir. (Fortran 95 derleyicisini ve Visual Studio 2010'u kullanıyorum)Fortran ve Visual Studio hata ayıklamada otomatik dizi uzunluğu

Dizinin tüm değişkenlerini hala nasıl görüntüleyebilirim? Burada Tamam


kodu için bir örnek geliyor:

ia bazı giriş parametrelerine bağlı olarak ana rutin bir değişken tamsayıdır.

subroutine abc(ia,a,b,c) 
dimension d(*) 

a = d(ia+1) 
b = d(ia+2) 
c = d(ia+3) 

return 
end 

Ancak hata ayıklama için bunu yapmak bulduk tek yolu Watch penceresini kullanın ve dizi öğeleri için bir saat eklemektir

+0

Gerçekten ne yaptığınızı anlamıyorum, sadece tahmin ediyorum. Bize biraz kod göster. (*), Varsayılan boyut dizileri olarak adlandırılan dizinin, dizinin boyutunu herhangi bir şekilde otomatik olarak ayarlamayacağını unutmayın. –

+0

Gönderinize imza eklemeniz gerekmez - kullanıcı kartınız otomatik olarak eklenir. Daha fazla bilgi için [SSS] sayfasını okuyun (http://stackoverflow.com/faq#signatures). – Artemix

+0

Dizi boyutunu bir şekilde vermeniz gerektiğinden (örneğin, ek bir argümanda), ayarlanabilir dizileri kullanabilirsiniz. GERÇEK d (*) 'yerine' REAL d (nsize) '' '' '' '' '' '' '' '' '' '' '' '' '' '' d''ün gerçek boyutunu 'd''de geçen bir 'INTEGER' argümanını kullanın. bir örnek veri tipi). Daha sonra hata ayıklayıcı, tüm dizinin içeriğini size gösterebilmelidir. –

cevap

1

d (*) ait endities bilmek yararlıdır .

d(2)  ! which just shows the 2nd element in the array 
d(1:10) ! which shows the first 10 elements of the array 
d(1:12:2) ! which shows the odd numbered elements of the array from 1 to 11 

Ve

tabii ki, size önermek gibi uzunluğu 60 bir dizi daha sonra, var: o zaman ben şu ifadeleri izlerken dizideki değerleri gösterir gördük, sizin dizi d denir varsayalım ifadesi

d(61) 

olanı dizi adresi işaret ettiği hafıza konumda hangi değerin gösterecektir.

Elbette dizinizi gerçekten d(:) olarak bildirmeniz gerekir. Bunu yaparsanız, VS hata ayıklayıcısı, olağan Locals penceresinde tüm diziyi gösterir.

+0

Otomatik diziler, kukla argümanlar değil yerel dizilerdir. –

+0

Nokta alındı, Vladimir. –

+0

Aksi takdirde +1, varsayılan şekil dizileri daha iyi olur, çünkü alt yordam dizi boyutunu bilir. OP herhangi bir kod göstermedi, bu yüzden sadece prosedür argümanlarından bahsettiğini tahmin edebilir. –