回答了问题2025-12-27
CMake是描述一系列编译目标(动态库、静态库、可执行程序)和它们的源代码文件。而具体使用什么编译器、使用什么参数,很大程度上是自动决定的。中间有那些必要的obj文件,也是自动决定的,不需要像makefile那样逐一显式声明。
回答了问题2025-12-27
因为时机晚了。实际上执行你的CMakeLists.txt之前,它已经决定了生成模式和工具链,并且依此运行了一大堆嗅探操作,决定了一大堆东西,不可能在脚本里再去改工具链。你基本上可以认为,在脚本内部CMAKE_C_COMPILER、CMAKE_CXX_COMPILER这几个变量只是用来读的。
回答了问题2025-12-26
回答是针对问题本身合理性的:C++就是为了明确内存使用。明确地使用内存、对象所有权和声明周期就是很麻烦的事情。不爽就用别的。
回答了问题2025-12-26
最常用的是本平台的开发者用的那个编译器,比如Windows是微软的MSVC,苹果是苹果魔改的clang。并且这些商业平台都期望你直接用它家的IDE(Visual Studio和XCode)。
回答了问题2025-12-26
那么你为什么不试试呢?看看你这么做的结果是什么。特别是:你可以每操作一步,都输出一下整个数组的内容,看看变成了什么样,所以下一步应当会变成什么样。
赞了回答2025-12-26
因为你第一次 arr[start] = arr[end] 之后 arr[start] 就已经变成 arr[end] 了,没法再赋值回去。
发布了文章2025-12-25
程序多少都需要一点二进制资源,比如图片、短音频之类的。有的时候由于各种原因,可能就是需要把它直接塞到程序的可执行映像文件里,而不是作为外部文件加载。经过一段时间的摸索,我发现有如下几种方法,放在这里以供参考:
回答了问题2025-01-03
首先使用良好约定的C++,内存管理未必很麻烦。界面逻辑比较复杂的玩意,好像C#比较流行,比如游戏引擎。
回答了问题2025-01-02
泛泛来讲,你需要做的是:拿到每帧图像的二进制、正确把帧数据传到贴图。最多可能有DMA之类的玩意,通过一些API扩展允许你直接使用硬件视频解码器的内存输出作为贴图,省去一次复制的时间消耗。这和你用什么框架没有任何关系,
赞了回答2025-01-02
可以加友元 {代码...}
回答了问题2025-01-02
宏名字只能用数字字母下划线。
赞了回答2025-01-02
你这个调用的时 operator++ ,是函数调用,不是内置的自增运算符。所以这里适用函数调用的规则。内置自增运算符的规则并不适用。所以 ++(++a) 是 a.operator++().operator++()(a++)++ 是 a.operator++(0).operator++(0)序列点要按函数调用的规则分析。在成员函数调用...
赞了回答2025-01-02
{代码...}
赞了回答2024-08-14
只有这几行好像也没有什么问题。但是最后不要这样,可读性太差了。new 出来的东西还是用指针吧。至少需要 delete 它的地方通常是持有一个指针的。用引用的话,通常意味着它永远不会“空”,并且也不需要 delete 。
赞了回答2024-08-14
Conan 和 Vcpkg 都支持私有包发布:Conan:可搭建私有仓库(如 Artifactory CE 或 Nexus)。使用 conan remote add 添加私有仓库地址。通过 conan create 创建包,conan upload 发布到私有仓库。
赞了回答2024-03-01
问题2:reset 之后,ptr 的指向改变,引用计数已经不是原来指针的引用计数了。新指针是个 nullptr ,引用计数为 0 。原来的指针引用计数是 2 ,两个引用都在 map 里,已经无法通过 ptr 访问。
赞了回答2024-03-01
我就想弄明白,为什么"This is a thread test\n"会被打印两次。被打印多少次都不要奇怪, 你在循环创建进程, 进程又创建线程, 很显然, 这两次打印属于两个进程.
回答了问题2024-02-27
你传给glBufferData的尺寸为什么是sizeof出来的?这显然有问题吧?
赞了回答2024-02-26
可以说明一下你的 main.cpp 、 Log.cpp 、 Log.h 的路径吗?
赞了回答2024-02-26
另外,你这个 unique_ptr 的测试里还多了一个 delete ,因为在第二轮循环 u1 为 nullptr ,u 就被 delete 掉了。