说明:本文基于基准项目模板 cpp-best-practices/cmake_template 编写。文中提到的“本模板”均指该模板;未来我们会整理并发布公司的自有模板工程,届时会同步更新本文说明与适配细节。 风格基线:统一对齐 LLVM Coding Standards,并以 clang-format 的 LLVM 风格选项 为实现依据(BasedOnStyle: LLVM)。...
c++-third-party-library-compilation-optimization
像spdlog和nlohmann/json这样的仅标头(header-only)库因其易用性和便捷性而广受欢迎,但它们在大型项目中可能会带来编译时间和生成文件体积膨胀的问题。以下是针对这些库的优化策略: 1. 分离编译(Explicit Template Instantiation) 对于像nlohmann/json这样的模板库,编译时间和二进制体积膨胀的问题可以通过显式实例化模板来缓解...
Data Structures for Concurrency
TBB提供了高度并发的容器类,适用于所有C++多线程应用程序;TBB并发容器类可以与任何线程方法一起使用,当然也包括TBB自身! C++标准模板库最初并没有考虑并发性。通常情况下,C++ STL容器不支持并发更新,因此尝试同时修改它们可能导致容器损坏。当然,可以使用粗粒度的互斥锁将STL容器包装起来,以确保只有一个线程可以同时操作容器。然而,这种方法会消除并发性,从而限制了并行速度提升,特...
TDD_in_Embedded_C/C++
本文讲解关于嵌入式系统单元测试的视频。演讲中举了移动电话设备的例子,但可以想象将其应用于设备控制器软件。重要的主题包括自动化单元测试框架、单元测试哲学(外部接口与实现的区别)、模拟、将设备控制器中的硬件/板级支持功能分成单独的代码单元,以及C++中的测试接缝。视频链接为 https://www.youtube.com/watch?v=vQJaRWpvgx8 。 最下方为字幕,机翻太离谱了,...
Concurrency
先看一个例子: #include <vector> #include <iostream> #include <algorithm> #include <tbb/parallel_for.h> #include <tbb/blocked_range.h> #include <tbb/cache_aligned_alloca...
原子操作的危险
Introduction 介绍 Most engineers reach for atomic operations in an attempt to produce some lock-free mechanism. Furthermore, programmers enjoy the intellectual puzzle of using atomic operations. Bot...
string_view
什么是string_view 转自Google的Abseil项目: Tip of the Week #1,和其他一些博客内容。 当你创建一个将(常量)字符串作为参数的函数时,你有四个选择,你可能知道两个,但不知道另外两个: void TakesCharStar(const char* s); // C convention void TakesString(co...
C++ 风格指南 - 内容目录
0. 扉页 基于google版本: 4.45 内部版本: A0 作者: gezi 当前C++版本 c++11以上 0.1 背景 本文主要是基于google风格而来。 本指南的目的是通...