22 Mayıs 2010

error: storage class specified for parameter "x"

Başlıktaki hatanın kötü bir huyu var, bir kere ortaya çıktı mı kendisinden sonra onlarca satır başka hatayı da listeletiyor. Çözümü arıyorsanız doğrudan yazının sonundaki özete bakın.

Bu hatanın ortaya çıkması için gerekli koşullar biraz özel. Tipik bir örnek şu oluyor
bir .h dosyasının şu içerikte olduğunu düşünün


extern void svs_non_max(int cols, int inhibition_radius, unsigned int min_response);
extern int svs_compute_descriptor(int px, int py, unsigned char* rectified_frame_buf, int no_of_features, int row_mean)
extern int svs_get_features_vertical(unsigned char* rectified_frame_buf, int inhibition_radius, unsigned int minimum_response, int calibration_offset_x, int calibration_offset_y, int segment);

Bunun bir C kodu olduğunu söylersem biraz dikkatli biri hatayı hemen görecektir. İkinci satırın sonunda noktalı virgül yok. Bunu gören derleyici, svs_compute_descriptor(...) fonksiyonunu komple bir tanımlayıcı(static, extern, const, int gibi) olarak algılıyor fakat ne olduğunu çözemiyor. Burada itibaren "storage class specified for parameter" hataları başlıyor, başlık dosyasının sonuna kadar gidiyor, ve başlıkta tanımladığınız değiskenlerin, fonksiyonların vs. kullanıldığı yerlerde de başka hatalar ortaya çıkıyor. 

Özet: storage class specified for parameter hatasını gördüğünüz yerde parantezleri ve noktalı virgülleri kontrol edin.

Hiç yorum yok:

Yorum Gönder