V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a33291
V2EX  ›  问与答

请教一个 C 语言问题

  •  
  •   a33291 · 2022-11-26 09:36:05 +08:00 · 1721 次点击
    这是一个创建于 489 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今儿看到一个源码,如图 1669426221056.jpg

    请问这个(void)len 的作用是啥?之前只学了个皮毛,大佬轻喷

    6 条回复    2022-11-26 18:36:46 +08:00
    xujinkai
        1
    xujinkai  
       2022-11-26 09:42:03 +08:00 via Android   ❤️ 5
    这句本身没作用。编译器会报参数未使用的警告,这句就是用一下这个参数,就不警告了。
    hackpro
        2
    hackpro  
       2022-11-26 09:59:03 +08:00 via iPhone   ❤️ 1
    返回值都没赋值
    有个鸟用
    dlsflh
        3
    dlsflh  
       2022-11-26 10:32:51 +08:00 via Android   ❤️ 1
    zero warning strategy.
    yolee599
        4
    yolee599  
       2022-11-26 10:37:19 +08:00 via Android   ❤️ 1
    告诉编译器,这个变量我还有用,不许报错。
    choury
        5
    choury  
       2022-11-26 12:05:53 +08:00   ❤️ 3
    为了在 Release 环境下编译没有 warning ,因为 Release 编译时 assert 会被去掉,而这个时候 len 就没有地方用到了,加个(void)len; 就可以消除掉参数未使用的 warning
    a33291
        6
    a33291  
    OP
       2022-11-26 18:36:46 +08:00
    @choury #5 感谢说明,在 release 模式的时候,这个无效语句不会被优化掉然后 flow 分析的时候任然发现 len 没有被用到吗?还是说这个(void)len 会被保留?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5656 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:44 · PVG 09:44 · LAX 18:44 · JFK 21:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.