首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

斩获 3.4k+ Star C++ Insights:用编译器视角看源码!

2017 年,我开始研究 C++11、C++14 和 C++17 带来一些新特性, lambda 表达式、基于范围 for 循环和结构化绑定等。...当然,至少对于 Clang 来说,是有 AST(抽象语法树)转储功能,我们可以用 Compiler Explorer 等工具查看编译器从 C++ 源代码片段生成代码。...(3)在 Clang 外部构建 你需要在搜索路径安装 Clang。...(4)在 Clang 内部构建 在 Clang 源代码树 C++ Insights 最简单方法,是使用 LLVM_EXTERNAL_PROJECTS 选项。.../scripts/getinclude.py` 自定义 GCC 安装 如果你用是自定义版本 GCC 编译器,例如 gcc-11.2.0,且未安装在编译器默认系统路径,那么在构建后,Clang 将无法找到正确

14310
您找到你想要的搜索结果了吗?
是的
没有找到

一文看尽C++ 过去这一年

作者 | Bartek 译者 | 苏本,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 免责声明:本文提出观点仅代表个人立场,并不代表整个ISO C++标准委员会意见...关于C++17语言特性: 从Clang版本5.0、 GCC版本8.0、 Visual Studio版本15.7和Intel C++ Compiler版本19.0.1开始,所有编译器都支持C++17语言特性...概念(Concepts)在版本16.3 可用 对to_chars()全面支持, 完善了C++17要求。 提供了一个名为C++ Build Insights新工具集。...一些相关新闻: 版本10.3.2新增功能:用于64位Windows环境C++17 -- 实现在所有Windows环境下使用C++17 Clang编译器。...新Delphi和C++Builder RAD服务器课程,已在Embarcadero学院、 Embarcadero博客站点、开发者工具和IDERA社区提供 RAD Studio 10.3新增功能: C+

3.4K10

C++17 在业务代码中最好用十个特性

, &value = value]{         std::cout << key << ": " << value << std::endl;     }(); } 另外这条限制在 c++20 已经被删除...,所以在 c++20 标准 gcc 和 clang 都可以捕获结构化绑定对象了。...常用于可能失败函数返回值,比如工厂函数。在 C++17 之前,往往使用T*作为返回值,如果为nullptr则代表函数失败,否则T*指向了真正返回值。...与union相比有两点优势: 可以存储复杂类型,而 union 只能直接存储基础 POD 类型,对于std::vector和std::string就等复杂类型则需要用户手动管理内存。...类型安全,variant 存储了内部类型信息,所以可以进行安全类型转换,c++17 之前往往通过union+enum来实现相同功能

2.4K20

C++ 实用指南

何在当今 C++ 世界中保持理智? 介   绍 你可能知道 C++ 是一种复杂语言。我甚至发现了一整页 Wiki 是讲对 Cpp 批判。现代 C++ 甚至为生态添加了更多内容。...这绝对会让你生活更轻松。 对于移动语义,你可以依赖库类型,因为它们会为你完成正确工作。例如,你现在可以安全地返回std::vector并确保它可能被移动甚至被删除,而无需额外副本。...感谢 Clang 以及其他平台上开发速度提升,我们获得了如下工具: ClangTidy(以前是 clang-modernise) Clang Format Clang Static Analyzer...最后底线:你旧代码仍然可以编译 C++ 规范越来越大原因之一是该语言向后兼容。所以委员会通常会引入新特性,但很少删除东西。所以……你代码仍然可以编译。...有时你会收到一些关于不推荐使用内容或删除特性警告( C++17 auto_ptr),但即使在这种情况下,你也可以将编译器切换到一些较旧 C++ 标准。

50320

C++17常用新特性(八)---其他不常用语言特性

C++17版本,标准委员会同时对一些小特性进行发布。在本文中,将对一些细小特性进行梳理。欢迎批评指正。...从某种程度说是一种破坏性改动,因为,伴随着这一改动,之前相关代码行为也会发生变化。一些主流编译器也已经支持了这一改动。:vs2015、g++5以及clang3.8及以后版本。...,鉴于此,C++17提供了16进制浮点数字面量,可以帮助我们处理需要精确浮点数场景。...auto c = u8'v'; char b = u8'm'; 在这里需要说明是C++不同版本对使用u8后转换字符类型定义是不一样:在 C++17 , u8'6' 类型是 char,在...7 异常声明作为类型一部分 C++17之前版本,noexcep并不作为类型一部分,因此声明相同参数和返回值类型函数时,无论有没有加上这个关键字,两个函数类型其实是等价,但是这种情况从C++17

69420

新版GCC和LLVM+Clang终于Release啦

支持多种运行时 提示源代码“列”时,支持多字节字符集 引入 Hardware-assisted AddressSanitizer 支持 DWARF调试信息版本升级到 DWARF version 5...一些编译优化提升(向量化、条件语句转switch,跨过程调用) 一些链接优化,优化速度和内存占用 Profile优化 [C] 增加一些新属性和warning [C] C2X一些新功能 [C++]...默认使用 C++17 [C++] 优化 --enable-cheaders=c_std 标记为不推荐使用,转而使用 --enable-cheaders=c_global 。...(行为一样) [C++] 继续增加C++20功能实现 [C++] 部分C++23功能 更多详见: https://gcc.gnu.org/gcc-11/changes.html LLVM+Clang...+libc++abi+libc++编译 构建脚本主要变化如下: 也是Python升级到3,允许复用GCC工具链Python。

65920

64位Windows 10下如何搭建CUNIT环境

(不拷贝在下面gcc或者clang运行,加入-lcunit参数会提示..lib: can’t find -lcunit错误) 接下来把C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6...5.3 打开VS Code 在插件输入Chinese,安装重启VS Code变为中文版 在插件输入c/c++,选第一个安装 在插件输入code runner,选第一个安装 在插件输入clang,...": "Default", // 可以为Default或Tag Parser,后者较老,功能较简单。...": "Disabled", // 因为有clang补全,所以关掉 "clang.cflags": [ // 控制c语言静态检测参数 "--target=x86_64-w64...默认target为msvc,不加这一条就会找不到头文件;Linux下去掉这一条 "-std=c11" ,// C++最新标准为c++17,或根据自己需要进行修改

2.2K20

FFmpeg开发笔记(九)Linux交叉编译Androidx265库

​《FFmpeg开发实战:从零基础到短视频上线》一书“12.1.2 交叉编译Android需要so库”介绍了如何在Windows环境交叉编译Android所需FFmpegso库,前文又介绍了如何在...1、安装cmake 执行以下命令安装cmake yum install cmake git 2、下载Linux版本android-ndk-r21e(已下载则忽略) 登录Linux服务器(比如华为云欧拉系统...,把文件所有“libx265.so.199”替换为“libx265.so”。...同时删除文件末尾“ -lpthread -lrt”。 (2)同目录relink.txt修改说明同link.txt。...env | grep PKG 9、重新编译FFmpeg启用x265 打开《FFmpeg开发实战:从零基础到短视频上线》随书源码chapter12/config_ffmpeg_full.sh,将该文件另存为

32210

代码优化之Analyze检测

类似于编译器警告(这对于查找编码错误很有用),但更进一步,一般使用运行时调试技术(测试)发现错误。...Clang Static Analyzer使用静态分析引擎是一个Clang库,可以在不同上下文和不同客户端重用。...由于使用最先进静态分析工具进行深入分析,静态分析可能比编译慢得多。 虽然Clang Static Analyzer设计尽可能快,重量轻,但不要指望它与编译程序一样快(即使启用了优化)。...4、更多检查 静态分析并不神奇,Analyzer只能找到一些指定bug。如果您希望Clang Static Analyzer找到特定类型错误,请随时提交功能请求或提供您自己补丁。...变量在之后代码从未被访问,造成内存泄漏 修改:将代码注释或者删除即可。

95520

【漫谈C++】入门 C++ language MacOs build development environment!!

前言 C++是一种通用、多范式编程语言,由Bjarne Stroustrup于20世纪80年代初开发。它是C语言扩展,旨在提供更高级别的抽象和更强大编程功能。...C++在计算机科学和软件开发领域具有广泛应用。它特点包括强大标准库,其中包括了大量数据结构和算法,以及用于文件操作、多线程、输入/输出等功能工具。...C++支持面向对象编程,允许将数据和行为封装在类,以提高代码可维护性和可重用性。此外,C++还支持模板元编程,使得泛型编程成为可能,能够创建具有通用性数据结构和算法。...本篇用于 Mac Os 系统搭建 软件安装 VsCode 安装 C++插件 如下图示,点击扩展,然后在商店文本框输入 C/C++,再选择 C/C++ 插件,点击安装。...,我们是 C++ IntelliSense 模式,设置成 clang-x64(legacy) 将 C 标准设置为 c17,C++ 标准设置为c++17 然后继续打开命令面板我们输入 task图片 生成了

20331

微信安全下一代特征计算引擎探索与实践

在上述架构,执行引擎执行用户编辑计算逻辑, z = x + y, 对输入数据进行计算,输出需要特征,是系统核心组件。 特征计算引擎探索 执行引擎实现有多种方案可选,如下图所示6种方案。...死代码删除,循环向量化等等。...如何基于Clang AST实现有趣工具和功能呢,后面介绍基于Clang开始时展开。...使用是BackendConusmer读取AST,同样如果自定义AST处理逻辑,可以重新它的如下等函数 示例clang-funcnames实现了自定义MyASTConsumer。...节点函数,访问表达式VisitDecl和访问声明VisitDecl,都是可重写函数: 示例clang-funcnames实现了自定义MyASTVisitor: 总结下一下,如果使用Clang进行静态代码分析

17710

【CMU15-445 FALL 2022】Project #1 - Buffer Pool

判断是否是可驱逐,不可驱逐,也不能删除。 根据该帧访问次数,判断从历史队列删除还是在缓存队列删除。 更新可驱逐帧数量。...同时更新相关信息,pages_信息,LRU-K信息(添加访问记录,设置为不可驱逐),以及在哈希表映射信息。...如果页面已固定且无法删除(即被引用),请立即返回 false。 删除在哈希表映射记录,删除LRU-K替换器记录,重置对应page信息,将该frame_id放到空闲队列。...当条件为true时,返回类型有效并启用函数模板; 当条件为false时,enable_if会导致编译器选择其他重载或者删除该函数模板。...enable if 适用于需要在模板函数根据类型或条件启用或禁用特定实例化情况。它通常用于模板函数重载和模板参数限制。

25630

ScriptX – 全能脚本引擎抽象层开源

ScriptX术语,"前端"指对外C++ API,"后端"则指不同底层引擎,目前已经实现后端有:V8, node.js,JavaScriptCore, WebAssembly, Lua....现代 C++ API API设计上符合现代 C++ 风格,: 三种引用类型Local/Global/Weak,使用copy, move语义实现自动内存管理(自动引用计数) 使用variadic template...注:ScriptX要求C++17(或1z)以上编译器支持,并需要打开异常特性,(可以关闭RTTI特性)。 3. 高性能 高性能是ScriptX设计上重要指标。...在实现过程也充分体现了 Zero-Overhead C++思想。并在增加功能特性时候通过相关性能测试。 ?...借助clang-format保证代码格式统一。 使用clang-tidy发现潜在问题。 在clang和MSVC编译器上都打开了"warning as error"级别的错误信息。

2.3K50

xmake v2.5.9 发布,改进 C++20 模块,并支持 Nim, Keil MDK 和 Unity Build

而通过 Unity Build,我们通过将多个 cpp 文件组合成一个来加速项目的编译,其主要好处是减少了解析和编译包含在多个源文件头文件内容重复工作,头文件内容通常占预处理后源文件大部分代码...xmake 在 v2.5.9 版本,也已经支持了这种构建模式。相关 issues 见 #1019。 如何启用? 我们提供了两个内置规则,分别处理对 C 和 C++ 代码 Unity Build。...同时,对新版本 clang/msvc 也做了更好地处理。...emcc 工具链来构建 wasm 程序,而这里,我们新加了另外一个启用了 WASI Wasm 工具链来替换 emcc。...modules 对 clang/gcc/msvc 支持,支持模块间依赖编译和并行优化 #1779: 改进 ml.exe/x86,移除内置 -Gd 选项

2.5K10
领券