这些问题仅向选择 C++ 作为其三种主要编程语言之一的开发者显示。

C++

您经常使用哪种(哪些)C++ 标准?

12%40%30%42%18%11%C++98/C++03C++11C++14C++17C++20不确定
Matt GodboltCompiler Explorer 的创造者

“很高兴看到现代 C++ 得到广泛采用。五分之一的受访者遵循了最新标准,这相当不错,还有更多人计划在明年至少改用 C++17。模块和概念似乎是强大的激励因素。”

C++ 标准迁移

41%17% 9%17%17%否,我没有迁移计划到 C++11到 C++14到 C++17到 C++20
Andreas KlingSerenityOS 和配套 YouTube 频道的创造者

“很多已经使用 C++17 的人都热切希望采用 C++20,这很容易理解。”

您当前的项目是否计划在未来 12 个月内使用这些 C++20 功能?

48%46%33% 5%31%模块概念协程其他
Andreas KlingSerenityOS 和配套 YouTube 频道的创造者

“正如预期的那样,模块在图表上处于领先地位。随着 C++ 构建时间逐年变遭,看看人们如何利用模块来对抗这种趋势将会非常有趣。”

您最常使用哪款 IDE/编辑器进行 C++ 开发?

28%26%24% 6% 3% 2% 2% 2%Visual Studio CodeCLionVisual StudioVi/VimQtCreatorEmacsSublimeXcode
所有结果

您经常使用哪种(哪些)单元测试框架?

32%11% 9% 5% 4% 2%30%16% 4%Google TestCatchCppUnitBoost.TestdoctestCppUTest我不为 C++ 编写单元测试我编写单元测试,但不使用任何框架其他

Matt GodboltCompiler Explorer 的创造者

“令人失望的是,仍有三分之一的开发者根本不编写任何单元测试。”

您在 C++ 中如何管理第三方库?

26%23%21%21% 9% 7% 5% 1%14% 5%库的源代码是我的构建的一部分我使用指令分别编译这些库我从网上下载预构建的库我使用系统软件包管理器vcpkgNugetConanbuild2以上皆非,我没有任何依赖项其他
Matt GodboltCompiler Explorer 的创造者

“近四分之三的受访者缺乏良好的打包解决方案;必须单独构建库、预构建库或者使用系统软件包管理意味着,要么需要开发者的劳动,要么依赖外部方来构建它们。这可能意味着落后于新版本,并增加了升级或更改编译器的复杂性。”

Andreas KlingSerenityOS 和配套 YouTube 频道的创造者

“如果我们没有许多竞争解决方案来解决这一问题,那就不会是 C++,但我不禁想,如果我们只选择一个解决方案并且一直使用,那么会不会变得更好。”

您当前的项目(工作或学校)允许使用什么错误报告方法?

80%
异常
54%
数字错误代码
20%
成功/失败结果类类型

您经常使用哪种(哪些)项目模型或构建系统?

55%36%31%10% 9% 9% 6% 6%CMakeMakefileVisual Studio 项目GradleNinjaXcode 项目定制构建系统Qmake
所有结果

您经常使用哪种(哪些)编译器?

GCCClangMSVCIntel适用于微控制器的编译器定制其他GCC78%Clang43%MSVC30%Intel9%适用于微控制器的编译器7%定制2%其他1%
Matt GodboltCompiler Explorer 的创造者

“有趣的是,在常用编译器的列表中,开源编译器名列前茅。就我个人而言,作为一名 Linux 用户,无法使用 MSVC 编译器。但在我看来,Windows 上的程序员数量会超过我们,因此 MSVC 的使用率会更高。”

Andreas KlingSerenityOS 和配套 YouTube 频道的创造者

“有趣的是,GCC 的增长速度超过了 Clang。根据传言,GCC 确实在 C++20 方面取得了更大的进展。”

除 C++ 外,您在项目中还使用哪种(哪些)编程语言?

45%31%21%15%15%12%11%11%PythonCShell 脚本语言 (bash/shell/powershell)JavaJavaScriptSQL(PL/SQL、T-SQL 和其他 SQL 编程扩展)C#HTML/CSS
所有结果

您或您的团队使用以下哪种(哪些)工具来执行准则或进行其他代码质量/分析?

38%23%21%17%11% 7% 4% 3% 2% 1%我的 IDE 提供的工具Clang-tidyClangFormatClang-analyzer/Clang Static AnalyzerCppcheckCpplintCoverityStackPVS-StudioParasoft C/C++test
所有结果

Andreas KlingSerenityOS 和配套 YouTube 频道的创造者

“自动代码格式设置仍然被严重低估。这听起来可能有点傻,但是通过使用像 ClangFormat 这样的工具,你将永远不需要再争论代码样式!”

感谢您的参与!

我们真诚地希望您能发现我们的报告有用。与您的朋友和同事分享这份报告。

加入 JetBrains Tech Insights Lab

参与调查和用户体验研究,让 JetBrains 产品更易用、更强大。参与我们的研究,您还将有机会获得奖励。

如果您有任何疑问或建议,请发送电子邮件至 surveys@jetbrains.com