gpt4 book ai didi

warnings - 了解 vala 编译警告

转载 作者:行者123 更新时间:2023-12-02 19:40:12 27 4
gpt4 key购买 nike

下面的编译警告对我来说不是很清楚,除了弃用 Warhin,但 valadoc 中方法的签名:

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

不显示其他方法签名。

其他警告更加晦涩。

max@max-ubuntu:~/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);    }}

最佳答案

使用 Vala 时,您通常可以忽略来自 C 编译器的警告。 Vala 拥有比 C 编译器更好的信息,因此当 C 编译器无法知道某些事情时,它知道某些事情是有效的。不幸的是,我们不能随处添加强制转换,因为在某些情况下我们无法生成有效的强制转换(而且,无法知道这些情况是什么)。

关于 g_type_init 被弃用的最后一个警告是因为从 glib 2.36 开始不再需要 g_type_init。您可以通过将 --target-glib=2.36 (或任何更高版本的 glib)传递给 valac 来消除该警告,但请注意,生成的代码可能不再适用于旧版本的 glib。

TBH,我经常只是将 -X -w 传递给 valac 以使 C 编译器保持安静。有时我会错过一个有用的警告,但它消除了很多无用的警告。

关于warnings - 了解 vala 编译警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19468179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com