Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[随笔]clang一些常用诊断标记

[随笔]clang一些常用诊断标记

原创
作者头像
望天
发布于 2022-05-25 12:55:52
发布于 2022-05-25 12:55:52
3020
举报
文章被收录于专栏:along的开发之旅along的开发之旅

最近代码上遇到一些问题,编译的时候不报错,执行的时候才报错,这种代码还是很危险的。

有两个case:

1. format时标记给的不对,比如是个int,但是格式化时用了%s

2. 函数应该return true,但是代码里没有实际返回,Android这边报错 "Failed anonymous mmap, out of memory", 记得以前int的时候,没有实际return int,是报错"illegal instruction".

这种问题,其实都可以在编译时发现,万能的clang,提供了很多诊断工具,详细列表在这里。

https://clang.llvm.org/docs/DiagnosticsReference.html

比如第一个场景,可以用“-Werror=format”,第二个可以用“-Werror=return-type”, 这样就可以直接编译时报错。

或者有些遇到,但是不希望报错的,可以用“-Wno-error=format”。

但最终还是推荐使用“-Wall -Wextra -Wconversion”保平安

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
muduo网络库学习之Timestamp类、AtomicIntegerT 类封装中的知识点
s1mba
2017/12/28
8110
muduo网络库学习之Timestamp类、AtomicIntegerT 类封装中的知识点
C++ 中文周刊 第140期
RSS https://github.com/wanghenshui/cppweeklynews/releases.atom
王很水
2024/07/30
1120
C++ 中文周刊 第140期
C++20 以 Bazel & Clang 开始
本文示例可见:https://github.com/ikuokuo/start-cpp20
GoCoding
2022/11/07
1.6K0
C++20 以 Bazel & Clang 开始
全志V853开发板移植基于 LVGL 的 2048 小游戏
这一节将以一个已经编写好的 lvgl 小游戏 2048 描述如何将已经编写完成的 lvgl 程序移植到开发板上。
阿志小管家
2024/02/02
3990
全志V853开发板移植基于 LVGL 的 2048 小游戏
Vim自动补全神器:YouCompleteMe
第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名。本来打算在实训期间来完成安装的,无奈网实在不给力,也就拖到了回家的时候。在开始准备工作的时候就了解到这个插件不是很容易安装,安装的时候果然名不虚传。(关于这方面的内容,请查看另一篇文章)不过,有付出总有回报,安装之后用上这个插件,真心为这个插件的强大所折服。 那这个插件有何不同? YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器。也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么。在Vi
小小科
2018/05/03
9.8K1
Vim自动补全神器:YouCompleteMe
张亦鸣 : eBPF 简史 (下篇)
本文介绍了 Linux 内核中的 BPF,从最初的 BPF 指令集,到后续的扩展指令集,以及将 BPF 用于 Linux 内核的进程调度、网络协议、文件系统等场景。作者还介绍了 BCC,即 BCC 框架,该框架是对 Linux 内核的扩展,可以用 BCC 框架来开发高性能、现代化的内核模块。
Linuxer
2017/11/09
6.4K0
张亦鸣 : eBPF 简史 (下篇)
基于 eBPF 的 Linux 可观测性
最近发布的 Linux 内核带了一个针对内核的能力强大的 Linux 监控框架。它起源于历史上人们所说的的 BPF。
黑光技术
2020/05/14
2.3K0
基于 eBPF 的 Linux 可观测性
eBPF 简史「建议收藏」
最近总能看到bpf,但苦于找不到合适的资料理解,终于找到一个分析讲解较全面的文章,分享给大家,原网址如下: http://www.linux-ren.org/tech/2230.mhtml https://www.ibm.com/developerworks/cn/linux/l-lo-eBPF-history/index.html
全栈程序员站长
2022/09/29
4640
OpenCv在Android Framework层集成 | 踩坑备忘
OpenCv在计算机视觉方面大有用处,这篇文章主要记录在Android Framework集成OpenCv,对Camera数据流进行处理,遇到的问题记录备忘。
小驰行动派
2024/11/23
1461
OpenCv在Android Framework层集成 | 踩坑备忘
深入剖析 iOS 编译 Clang / LLVM
2000年,伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-Champaign 简称UIUC)这所享有世界声望的一流公立研究型大学的 Chris Lattner(他的 twitter @clattner_llvm ) 开发了一个叫作 Low Level Virtual Machine 的编译器开发工具套件,后来涉及范围越来越大,可以用于常规编译器,JIT编译器,汇编器,调试器,静态分析工具等一系列跟编程语言相关的工作,于是就把简称 LLVM 这个简称作为了正式的名字。Chris Lattner 后来又开发了 Clang,使得 LLVM 直接挑战 GCC 的地位。2012年,LLVM 获得美国计算机学会 ACM 的软件系统大奖,和 UNIX,WWW,TCP/IP,Tex,JAVA 等齐名。
用户7451029
2020/06/16
8.1K0
深入剖析 iOS 编译 Clang / LLVM
CMake搭建编译环境总结
  交叉编译算是每个嵌入式开发者都会经历的一道坎吧,通俗的描述就是搭建Arm板代码编译环境,让代码能够在Arm板子上跑起来。常用到的编译工具为Makefile和CMake,本篇记录下CMake的常用技巧。
开源519
2022/12/01
2.6K0
熟悉又陌生的arm 编译器详解(armcc/armclang)
素材来源:https://blog.csdn.net/qq_34430371/article/details/125820927
李肖遥
2022/12/22
2.6K0
熟悉又陌生的arm 编译器详解(armcc/armclang)
Dev 日志 | Segmentation Fault 和 GCC Illegal Instruction 编译问题排查
笔者最近在重新整理和编译 Nebula Graph 的第三方依赖,选出两个比较有意思的问题给大家分享一下。
NebulaGraph
2019/11/20
1.9K0
Dev 日志 | Segmentation Fault 和 GCC Illegal Instruction 编译问题排查
iOS中的预编译指令的初步探究
开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩;奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了??别不服,先听我说完,先把你的砖头放下。狭义的仿生学是外形上仿生嘛,其实广义上仿生学还可以原理的仿生,构造的仿生,性能的仿生阿拉巴拉……,计算机(这里我狭义
王大锤
2018/05/17
2.4K0
C++ 中文周刊 2024-03-03 第150期
RSS https://github.com/wanghenshui/cppweeklynews/releases.atom
王很水
2024/07/30
1260
C++ 中文周刊 2024-03-03 第150期
C++最佳实践 | 1. 工具
本文档旨在收集对C++最佳实践所进行的协作性讨论,是《Effective C++》(Meyers) 和《C++ Coding Standards》(Alexandrescu, Sutter) 等书籍的补充。在讨论如何确保整体代码质量的同时,补充了一些没有讨论到的较低级别的细节,并提供了具体的风格建议。
C语言与CPP编程
2022/10/31
3.6K0
必撸系列!Go另外几个黑魔法技巧汇总
导语 |  最近一段时间,笔者重新梳理了一下go知识点,并深入地看看了它的源码,在实践中又有了新的沉淀,于是写下这篇文章和大家分享一下。 在上一篇文章《来了!Go的2个黑魔法技巧》中,笔者分享了go中两个有意思的技巧。 而最近一段时间,笔者重新梳理了一下go知识点,并深入地看看了它的源码,在实践中又有了新的沉淀,于是写下这篇文章和大家分享一下。 一、魔法:最小化运行时(minimal runtime) 我们知道,go有一层很重的运行时(runtime),包括内存管理、goroutine 调度等重要组件;这些
腾讯云开发者
2022/05/25
6320
必撸系列!Go另外几个黑魔法技巧汇总
手把手教你配置linux下C++开发工具——vim+ycm(YouCompleteMe),支持基于语义的自动补全和第三方库补全(史上最简单、史上最透彻、史上最全的终极解决方案)
截止到目前,vim稳定版本已经到了8.2+,ycm(YouCompleteMe的简称)最新版本与几年前的安装配置截然不同了。之前网上很多教程也教不得法,生搬硬套,没有讲透彻。所以,才下定决心写一篇自认为史上最简单、史上最全的教程出来。
Java架构师历程
2020/11/10
6.1K0
手把手教你配置linux下C++开发工具——vim+ycm(YouCompleteMe),支持基于语义的自动补全和第三方库补全(史上最简单、史上最透彻、史上最全的终极解决方案)
Category 特性在 iOS 组件化中的应用与管控
除了引用中提到的添加方法,Category 还有很多优势,比如将一个类的实现拆分开放在不同的文件内,以及可以声明私有方法,甚至可以模拟多继承等操作,具体可参考官方文档Category。
美团技术团队
2019/01/07
1.9K1
android native内存检测方案(二)
android native 代码内存泄露 定位方案(一) 什么是 AddressSanitizer clang 是一个 C、C++、Objective-C 编程语言的编译器前端。它采用 了底层虚拟机作为其后端。它的目标是提供一个 GNU 编译器套装 (GCC)的替代品, 作者是克里斯·拉特纳,在苹果公司的赞助下进 行开发。 AddressSanitizer 是 clang 中的一个内存错误检测器,它可以检测到 以下问题: Out-of-bounds accesses to heap, stack an
用户1263308
2018/02/02
4.6K0
android native内存检测方案(二)
推荐阅读
相关推荐
muduo网络库学习之Timestamp类、AtomicIntegerT 类封装中的知识点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档