21 | 工具漫谈:编译、格式化、代码检查、排错各显身手
该思维导图由 AI 生成,仅供参考
编译器
MSVC
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了现代C++编译器选择指南,重点介绍了MSVC、GCC和Clang三种主要的C++编译器。MSVC在传统代码优化和并发方面表现不俗,适合Windows开发;GCC作为自由软件的代表,跨平台性更好,但在出错信息的友好程度上有所欠缺;Clang在错误信息易用性和对C++标准的支持方面表现出色,尤其在模块化设计和动态库方面有优势,是macOS下的默认C/C++编译器。此外,文章还介绍了Clang-Format、Clang-Tidy、Cppcheck等格式化工具和代码检查工具,以及Valgrind和nvwa::debug_new等排错工具。总的来说,MSVC适合Windows开发,而Clang则在跨平台和错误信息友好性方面表现突出。读者可以根据项目需求和个人偏好选择合适的编译器和工具,以提高开发效率和代码质量。
《现代 C++ 编程实战》,新⼈⾸单¥59
全部留言(17)
- 最新
- 精选
- Geek_71d4ac想知道在vim上写C++,有没有比较好的插件推荐,谢谢
作者回复: 看我的 Vim 配置,我用到的这些和 C++ 开发有关: clang_complete nerdcommenter(注释) vim-fugitive(git) vim-gitgutter(git) code_complete echofunc 另外,我在 .vimrc 里加了下面几句来集成 clang-format: " Key mappings to use clang-format noremap <silent> <Tab> :pyxf /usr/local/opt/llvm/share/clang/clang-format.py<CR> inoremap <silent> <C-F> <ESC>:pyxf /usr/local/opt/llvm/share/clang/clang-format.py<CR>i
2020-01-13517 - tt嗯,我说老师的代码怎么是我订阅的课程里显示最友好的呢!👍
作者回复: 工具很重要。😎
2020-01-13210 - 廖熊猫看到C++ Insights这个工具了,跟大家分享一下这段总结的关于递归模板的几个心得吧。 根据老师讲的这几种,我把这几种分类成: 1.数值、2.拉取、3.打包。 1. 数值型:操作数值(一般是减去),然后到达一个终止条件(一般是等于0),例如factorial 2. 拉取型:从...中每次拉取一个数值跟第一个参数进行操作,合并成一个参数,继续拉取过程,直到后面...中的参数被用光,终止条件就是指剩一个参数,例如: sum 3. 打包型: 从第一个参数中分离出一个参数进入...参数包中,然后继续这个过程,直到第一个参数达到终止条件,例如: make_index_sequence 只是个人见解,希望能对大家有点帮助。
作者回复: 挺好。这确实是最常见的几种用法。
2020-01-138 - tokamak我看到公司的算法库都用intel的icc编译器编译的,算法的同事说icc编译器编译的代码性能会好一些,对于计算密集型的程序是否可以用icc编译器代替gcc?
作者回复: 你可以对照下面链接看一下,你需要的 C++ 功能在 ICC 里是不是支持了: https://en.cppreference.com/w/cpp/compiler_support 初看之下,似乎问题不大。但性能问题,还是需要实测的。 如果发现有问题(性能或功能),混合编译器也是可以考虑的,虽然管理上会复杂点。可以考虑把需要 ICC 编译的东西放单独的项目,编译成库,供其他项目使用。
2020-02-022 - 泰一老师您好,之前看了这篇文章了解到您的代码排版使用了clang-format适配小屏,涨了一些姿势。最近在个人微信公众号也写了些技术文章,但是苦恼于使用了一些在线转换工具将markdown写的文章转移到微信公众号,排版真的不太优雅,尤其是代码的排版,要不就是混乱,要不就是没有向您一样的语法高亮,要不就是文字字体太难看。很喜欢您的排版风格,所以您能推荐下您使用的markdown转换到微信的工具嘛,谢谢老师👨🏫
作者回复: 我对微信公众号不熟。不过,搜了一下,发现这个网站,也许对你有用: https://md.qikqiak.com/
2020-03-211 - 花晨少年一直在ubuntu用clion+bazle进行项目编译,感觉挺好用的,但是macbook这套方案没法用,很蛋疼。
作者回复: Bazel?那你只能找Bazel和JetBrains的人解决这个兼容性问题了,我可没办法。😅 或者改用CMake?我看了下Bazel的介绍,没觉得它比CMake好。特别是,CMake有不少特别的对C++的支持,包括对不同的编译器、Boost的库链接选项、C++标准,等等。
2020-01-1321 - 三味cpp中第三方库的管理超麻烦,x86或x64,release或debug,从vc6到最新的vs2019,windows下第三方库管理起来太麻烦了。 那么,有没有一种好用的第三方库管理呢? 如果用vs2015以上,超推荐使用vcpkg啊!就连生成汇编参考的那个网页工具,都大大咧咧的横幅推荐vcpkg,好用到爆啊! 如何使用不多说了,如何好用提一下。命令行安装对应的库,工具会进行漫长的编译。要引用这个库,只需要#include对应的头文件,lib库会自动加载,dll会在运行的时候拷贝。就这样。
作者回复: 名气是挺响了。我没有使用经验……
2020-01-131 - 当初莫相识老师,最近VS2022+Qt写项目,但是乱码问题始终不能很好解决。主要是文件编码这块,服务器传来的数据是UTF-8,而VS默认gbk,把文件编码改成UTF-8 bom还是不行,编译器及调试都是gbk进行的。不知道老师对于这块有没有好的解决方案
作者回复: 源代码如果用UTF-8加BOM字符肯定是可以的。你从服务器读取的数据,用Qt自身的机制来处理,应该也是可以处理不同编码的。 我不用Qt,查了下,Qt可以支持UTF-8编码,内部则使用UTF-16,这样对于调试器也应该没问题才对。 https://wiki.qt.io/Strings_and_encodings_in_Qt 建议再看看第11讲,理解清楚底层的细节。搞清楚问题原因,总是可以解决的。
2022-09-03归属地:上海 - 常振华windows上的代码编辑器source insight
作者回复: Source Insight 好像有点老了吧?以前曾经是不错的工具,但上次看别人用,对现代 C++ 代码的解析能力似有不足(但我没有亲身使用经验)。价格也有点贵。
2021-11-15 - 土土人关于排错,debug相关没有什么信息啊??
作者回复: 调试器平台相关,网上你也能够找到足够的关于 IDE、WinDBG、GDB 的信息,我这边讨论就意义不大了。
2021-10-26