C++/Rust Interop: Using Bridges in Practice1 - New Rust Extends a C++ Project 5Large existing C++ Library New Plugin Existing Plugins 6C++ Header Class with Methods C++ Source Uses extern “C” from Rust Unsafe Rust C ABI Safe Rust hpp cpp std::unique_ptr<rust::Joint, deleter_from_fn> robot_joint_; }; } // namespace robot_joint hpp 10namespace robot_joint::rust { struct Joint; } // namespace robot_joint::rust extern "C" "C" { extern void robot_joint_free(robot_joint::rust::Joint*); } template struct deleter_from_fn { template constexpr void operator()(T* arg) const { fn(arg); } }; hpp 0 码力 | 45 页 | 724.12 KB | 6 月前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串键(‘ \x1b’ ) • 127 表示 DEL 键(‘ \x7f’ )等 • 0~31 和 127 这些整数,就构成了 ASCII 码中控制字符的部分。 关于控制字符的一个冷知识 • 在 Linux 命令行中启动 cat 。 • 试试按 Ctrl+R , Ctrl+E , Ctrl+C 等一系列 组合键,看到出现了什么? • 可以看到显示的字符变成了 ^R ^E ^C 等… … • 这是 这个特殊的名字空间里包含了所有的 operator“” 函数。 小彭老师锐评:何谓“键盘压力” • 高情商:键盘压力,指的是程序员敲击键盘时产生的心理压力。 • 低情商:键盘压力,指的是 rust 键盘侠对 cpp 标准委员会的压力。 • rust 键盘侠曰:我们有 233_i32 , cpp 做得到吗? • cpp 标准委员会:谢邀,人在 cpp14 ,已经在 operator“”_i32 了。 • 其实 cpp namespace ,不会存在强迫别人接受你的那一套后缀名规范。 • 甚至可以自定义一个 class int32 具有成员函数,然后就可以快乐地 233_i32 .some_method() 了。而 rust 这种预先规定好一些后缀,就只能是他们标准库的那 个 int32 ,不能自己定义了。 • 所以 cpp 之父曾经说,他设计 cpp11 的时候,是考虑“如何在对语言本身改动最小的情况下 ,尽量只0 码力 | 162 页 | 40.20 MB | 1 年前3
CROSS PLATFORM PITFALLS AND HOW TO AVOID THEMper target platform…. set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) …instead of adding logic and build libraries from source on Windows, Linux, and macOSC++ package managers: Conan, vcpkg Bring down and build libraries from source on Windows, Linux, and macOS Transitive dependencies fetched automaticallyC++ package managers: Conan, vcpkg Bring down and build libraries from source on Windows, Linux, and macOS Transitive dependencies fetched and resolved automatically Acquire prebuilt binaries0 码力 | 67 页 | 360.44 KB | 6 月前3
Cooperative C++ Evolutionto “optional” in 2011 C++11 std::string ~11 years Banned RC for std::string in 2008/2010 Major Linux distro enabled it in 2019 Python 3 ~12 years Shipped 3.0 in 2008 10% still using 2.x as of early JavaScript, C++, Objective-C) C++ examples CCured*, CFlat*, CNatural**, Cyclone**, D*, .NET*, Rust*… — C++11/14/17/20/23 Dart* ES 4, Python 3 TypeScript Swift ES 2-10 (except 4) C99/11/17, Python JavaScript, C++, Objective-C) C++ examples CCured*, CFlat*, CNatural**, Cyclone**, D*, VB.NET*, Rust*… — C++11/14/17/20/23 Dart* ES 4, Python 3 TypeScript Swift ES 2-10 (except 4) C99/11/17, Python0 码力 | 85 页 | 5.73 MB | 6 月前3
A New Decade of Visual Studio: C++20, Open STL and Moreeditor [StackOverflow Developer Surveys] Free, open source code editor Runs on Windows, macOS, and Linux C++ IntelliSense, debugging, code browsing CMake, vcpkg and git integrations Remote experiences range-for copy • Expensive copy with the auto keyword Tue 9/15 12:00 – 13:00 Closing the Gap between Rust and C++ Using Principles of Static Analysis Sunny Chatterjee – destroy_n() venueAddress Sanitizer configurations (/MTd, /MDd) now included Visual Studio integration • MSBuild & CMake support for Windows & Linux • Debugger integration for MSVC and Clang/LLVM Tue 9/15 9:00 – 10:00 2020: The Year of Sanitizers0 码力 | 37 页 | 2.67 MB | 6 月前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化位( 32 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业) Git 2.x (作业上传到 GitHub ) CUDA Toolkit 10.0 以上( GPU 专题) 第 0 章:汇编语言 x64 架构下的寄存器模型 ivdep C/C++ 的缺点:指针的自由度过高,允许多个 immutable reference 指向同一个对象,而 Rust 从语法层面禁止,从而让编译器放心大胆 优化。 为什么标准委员会不改进一下?因为一旦放弃 兼容,就等于抛弃所有历史遗产的全新语言, 就和 Rust 无异,从而没有任何理由再学习 C++ 。 std::vector :也能实现 SOA ! 优化前 (AOS) 优化后0 码力 | 108 页 | 9.47 MB | 1 年前3
Shared LibrariesBinary: • Executable / Shared Library , Component, Module • Symbol: • Function / Global variable • “Linux”: • Unix-like systems • Mostly MacOS too (1 important distinction to come) 2Intro to Linking in write its address at 0x2000” … 0x00000000 … Address-list section: “IAT” in Windows, “GOT” in Linux Cross-binary calls are typically indirect – carry a virtual-call overheadWindows 8binary … section .rdata… .idata lib1: f1, f2, f3 lib2: g1, g2, g3 Windows Schematic Interface 11Linux 12Linux import sections • .dynamic /.dynsym : separate buckets of lib names and symbol names 13lib10 码力 | 69 页 | 1.40 MB | 6 月前3
Hello 算法 1.1.0 C++ 版全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 字节。 ‧ Go 语言的 string 类型在内部使用 UTF‑8 编码。Go 语言还提供了 rune 类型,它用于表示单个 Unicode 码点。 ‧ Rust 语言的 str 和 String 类型在内部使用 UTF‑8 编码。Rust 也提供了 char 类型,用于表示单个 Unicode 码点。 需要注意的是,以上讨论的都是字符串在编程语言中的存储方式,这和字符串如何在文件中存储或在网络中0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 C++版程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java、C++、Python、Go、JS、TS、C#、Swift、Rust、Dart、Zig 等 语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若您是算法初学者,从未接触过算法,或者已经有一些刷题经 false true false 对于表 3‑1 ,需要注意以下几点。 ‧ C 和 C++ 未明确规定基本数据类型大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于包 括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 个字节。 ‧ Go 语言的 string 类型在内部使用 UTF‑8 编码。Go 语言还提供了 rune 类型,它用于表示单个 Unicode 码点。 ‧ Rust 语言的 str 和 String 类型在内部使用 UTF‑8 编码。Rust 也提供了 char 类型,用于表示单个 Unicode 码点。 需要注意的是,以上讨论的都是字符串在编程语言中的存储方式,这和字符串如何在文件中存储或在网络中0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 C++版全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 字节。 ‧ Go 语言的 string 类型在内部使用 UTF‑8 编码。Go 语言还提供了 rune 类型,它用于表示单个 Unicode 码点。 ‧ Rust 语言的 str 和 String 类型在内部使用 UTF‑8 编码。Rust 也提供了 char 类型,用于表示单个 Unicode 码点。 需要注意的是,以上讨论的都是字符串在编程语言中的存储方式,这和字符串如何在文件中存储或在网络中0 码力 | 378 页 | 17.59 MB | 1 年前3
共 164 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17













