2013-10-19 6 views
5

नीचे संकलन चेतावनी मेरे लिए इतना स्पष्ट, Appart प्रतिवाद warhing से नहीं हैं, लेकिन valadoc में विधि के हस्ताक्षर:समझ वाला संकलन चेतावनी

http://valadoc.org/#!api=gstreamer-1.0/Gst

कोई अन्य विधि हस्ताक्षर को दर्शाता है।

अन्य चेतावनी अधिक अस्पष्ट हैं।

 

[email protected]:~/mdev/cr valac --pkg gstreamer-0.10 gstpipe.vala 
/home/max/dev/main-sandbox/cr/gstpipe.vala.c: In function ‘application_message’: 
/home/max/dev/main-sandbox/cr/gstpipe.vala.c:64:2: warning: passing argument 1 of ‘_gst_structure_copy0’ discards ‘const’ qualifier from pointer target type [enabled by default] 
/home/max/dev/main-sandbox/cr/gstpipe.vala.c:26:17: note: expected ‘gpointer’ but argument is of type ‘const struct GstStructure *’ 
/home/max/dev/main-sandbox/cr/gstpipe.vala.c:82:9: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] 
/home/max/dev/main-sandbox/cr/gstpipe.vala.c: In function ‘main’: 
/home/max/dev/main-sandbox/cr/gstpipe.vala.c:173:2: warning: ‘g_type_init’ is deprecated (declared at /usr/include/glib-2.0/gobject/gtype.h:669) [-Wdeprecated-declarations] 

 

using Gst; 


void application_message(Gst.Bus bus, Gst.Message msg) { 

     var s = msg.get_structure(); 

     if(s == null) 
      return; 

     string msgtype = s.get_name(); 

     if(msgtype != "level") 
      return; 

     GLib.Value rms = s.get_value("rms"); 
     //GLib.Value st = s.get_value("stream-time"); 

     GLib.DateTime now = new GLib.DateTime.now_local(); 

     var sec = now.to_unix(); 
     var msec = (sec * 1000) + now.get_microsecond();   

     var z = rms.strdup_contents(); 

     //z = z.replace("{", "[").replace("}", "]"); 

     stdout.printf("%ld, %s \n", (long) msec, z); 
} 


void main (string[] args) { 

    Gst.init (ref args); 

    try { 

     var pipeline = Gst.parse_launch(
      "pulsesrc device=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" ! " + 
      "level name=wavelevel interval=10000000 ! " + 
      "wavenc ! filesink location=audioz.wav" 
     ); 

     var bus = pipeline.get_bus(); 

     bus.add_signal_watch(); 
     bus.message.connect(application_message); 

     // Set pipeline state to PLAYING 
     pipeline.set_state (State.PLAYING); 

     // Creating and starting a GLib main loop 
     new MainLoop().run();   
    } 
    catch(Error e) { 
     print("%s\n", e.message); 
    } 
} 

उत्तर

11

आप आम तौर पर सी संकलक से चेतावनी जब वाला का उपयोग कर अनदेखा कर सकते हैं। वाला में सी कंपाइलर की तुलना में बेहतर जानकारी है, इसलिए यह जानता है कि कुछ चीजें मान्य हैं जब सी कंपाइलर को यह जानने का कोई तरीका नहीं है। दुर्भाग्यवश हम केवल उन जगहों पर नहीं जोड़ सकते हैं क्योंकि ऐसी परिस्थितियां हैं जहां हम वैध कलाकार नहीं बना सकते हैं (और, और क्या है, यह जानने का कोई तरीका नहीं है कि ये स्थितियां क्या हैं)।

अंतिम चेतावनी, g_type_init को बहिष्कृत करने के बारे में, क्योंकि g_type_init अब glib 2.36 के रूप में आवश्यक नहीं है। आप वैलैक के लिए लक्ष्य-ग्लिब = 2.36 (या ग्लिब का बाद का संस्करण) पास करके उस चेतावनी से छुटकारा पा सकते हैं, लेकिन चेतावनी दी जानी चाहिए कि जेनरेट कोड अब ग्लिब के पुराने संस्करणों के साथ काम नहीं कर सकता है।

टीबीएच, मैं अक्सर सी संकलक को शांत होने के लिए वैलैक पर -X -w पास करता हूं। कभी-कभी मुझे एक उपयोगी चेतावनी याद आती है, लेकिन यह बेकार चेतावनियों के लॉट से छुटकारा पाता है।

संबंधित मुद्दे