抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

C++函数调用 C++支持两种函数调用方式,__stdcall和__cdecl,两者对栈帧(stack frame)的处理方式不同,__stdcall是由被调用函数来清理栈帧,__cdecl是由调用函数来清理栈帧。一旦混用,容易引发错误 两者混用可能会导致栈帧没有被释放或者被连续释放两次 stack frame 栈帧用于维护函数调用的上下文信息,在函数调用时,会在栈上分配一块内存,用于存...

C++模版 《C++ Templates: The Complete Guide》笔记 为什么使用模版 为了实现泛型 如果不使用泛型,对于一些通用的函数或容器,比如print、vector,我们可能需要逐个实现他们的函数,尽管这些函数的功能十分类似(可能相同),低效复杂而且难以维护 在C++标准库中使用了大量模版 模板的缺点 难以阅读、调试 容易触发编译报错(比如将<<运算...

有意思的代码 记录一下平时遇到的有意思的代码,不定期更新 在注释中的立方体 001------101 / | / | / | / |011------111 | | 000--|--100 | / | / | / | /010------110 消除未使用变量 有人会认为C++的警告(Warming)等同于报错,于是会通过一些宏关掉一些警告...

SWIG实现Python调用C++ 在实际项目开发中,我们经常有跨语言交互的需求,比如使用Python/Lua脚本调用引擎代码。常用的方案有很多,我们来介绍SWIG 语言 特点 C++/CLI C++和C# 微软为.NET平台高度定制的拓展,允许C++调用托管代码 SWIG 多语言 跨平台多语言,需要写.i文件,有一定侵入性 Boost Python和C++ J...

FBX SDK FBX是一种主流的三维模型格式,格式闭源,但可以通过免费的FBX SDK编辑模型 开发环境 Visual Studio 2022 Cmake 安装FBX SDK,我根据环境安装的是2020 VS2022 cmake构建 在FBX SDK安装位置,能看到include、lib等,这里使用动态库构建 cmake_minimum_required(VERSION 3.21)pr...

Mac开发环境配置 前几天遇到一个问题,某个VPN软件开启后无法正常关闭,而强行关闭后并没有还原网络配置,导致我只有开着VPN才能连接网络,一时间没有好的办法,于是将Mac重装了系统,记录一下环境配置,没准以后还会用到 我的设备是Macbook Air M1,主要用于Metal开发和写博客 Mac重装系统 重要文件注意备份(放在iCloud最方便) 在关机状态下长按电源键,此时会提...

C与C++的DLL 今天中午跟同事吃饭时,有人分享他在清理项目中的Warming,其中包括C++风格的DLL,我才知道,DLL建议写C风格的 根本原因是,C++功能复杂,更依赖Name Mangling,而三大编译器具体实现不尽相同,使得ABI不确定 DLL 我们都知道,代码到可执行文件,要先代码编译得到目标文件,目标文件链接得到可执行文件。但其实可执行文件在执行时,还会进行装载 D...

Google C++ 代码规范 Google C++ Style Guide Google提出的一套代码规范,能提高代码的可读性,减少出错。建议配合Effective C++阅读 头文件 所有头文件都应该自给自足(self-contained) self-contained : compile on their own 确保你的header files包含了你需要的所有东西,而不是假设你...

C++11特性 都什么年代了,还在整C++11?八股害人啊 一:C++11的“新”特性 nullptr 一个新关键字,用于表示指针指向no value,可以被自动转化为各种指针类型,但是不会被转化为整数 比NULL好,因为NULL的本质就是整数0 auto 通过auto声明变量、对象,可以自动推到其类型,在处理表达式时有奇效 auto l = [](int x) -> {.....

CMake 快速入门 一个大项目(Project)内嵌多个子项目(SubProject) 一个子项目内有src、include、CMakeLists.txt,其中有一个子项目中有main.cpp 最外面的CMakeLists.txt,负责连接所有子项目: cmake_minimum_required(VERSION 3.20)project(Project)set(CMAKE_CXX_ST...