
c++
文章平均质量分 96
绝不原创的飞龙
这个作者很懒,什么都没留下…
展开
-
面向 C++ 的现代 CMake 教程(一)
打好基础对于理解更高级的内容和避免愚蠢的错误至关重要。大多数 CMake 用户在这里会遇到麻烦:没有坚实的基础,很难达到正确的结果。难怪会这样。跳过入门材料,直接进入实际行动并快速完成任务是很有诱惑力的。我们在本节中解释了 CMake 的核心主题,并拼凑了几行代码来展示最简单的项目看起来是什么样子,以解决这两个问题。为了构建恰当的思维背景,我们将解释 CMake 究竟是什么以及它是如何工作的,还会介绍命令行的样子。我们会讨论不同的构建阶段,并学习用于生成构建系统的语言。原创 2024-05-24 17:54:59 · 666 阅读 · 0 评论 -
面向 C++ 的现代 CMake 教程(五)
原文:zh.annas-archive.org/md5/125f0c03ca93490db2ba97b08bc69e99。原创 2024-05-24 17:54:13 · 535 阅读 · 0 评论 -
面向 C++ 的现代 CMake 教程(四)
你会在研究代码上花费的时间比在编写代码上多——因此,你应该优化阅读而不是编写。这句话在讨论整洁代码实践的书中被像咒语一样重复。难怪,因为这是非常正确的,很多软件开发者已经在实践中证明了这一点——以至于连像空格数、换行符以及#import声明的顺序这样的微小事情都有了规定。这并不是出于小气,而是为了节省时间。遵循本章概述的实践,我们无需担心手动格式化代码。它将自动在构建过程中作为副作用进行格式化——这是我们无论如何都必须执行的步骤,以检查代码是否正确运行。原创 2024-05-24 17:53:14 · 812 阅读 · 0 评论 -
面向 C++ 的现代 CMake 教程(三)
原文:zh.annas-archive.org/md5/125f0c03ca93490db2ba97b08bc69e99译者:飞龙协议:CC BY-NC-SA 4.0第六章:使用 CMake 进行链接你可能会认为,在我们成功将源代码编译成二进制文件之后,作为构建工程师我们的工作就完成了。事实几乎如此——二进制文件包含了 CPU 执行的所有代码,但代码分散在多个文件中,方式非常复杂。链接是一个简化事物并使机器代码整洁、易于消费的过程。快速查看命令列表会让你知道 CMake 并没有提供很多与链接相原创 2024-05-24 17:52:15 · 490 阅读 · 0 评论 -
面向 C++ 的现代 CMake 教程(二)
原文:zh.annas-archive.org/md5/125f0c03ca93490db2ba97b08bc69e99译者:飞龙协议:CC BY-NC-SA 4.0第三章:设置你的第一个 CMake 项目现在我们已经收集了足够的信息,可以开始讨论 CMake 的核心功能:构建项目。在 CMake 中,一个项目包含管理将我们的解决方案带入生活的所有源文件和配置。配置从执行所有检查开始:目标平台是否受支持,是否拥有所有必要的依赖项和工具,以及提供的编译器是否工作并支持所需功能。完成后,CMake原创 2024-05-24 17:51:33 · 1128 阅读 · 0 评论 -
CMake 秘籍(七)
原文:zh.annas-archive.org/md5/ecf89da6185e63c44e748e0980911fef。原创 2024-05-15 18:56:20 · 577 阅读 · 0 评论 -
CMake 秘籍(四)
原文:zh.annas-archive.org/md5/ecf89da6185e63c44e748e0980911fef译者:飞龙协议:CC BY-NC-SA 4.0第七章:生成源代码在本章中,我们将介绍以下配方:在配置时生成源代码使用 Python 在配置时生成源代码使用 Python 在构建时生成源代码记录项目版本信息以确保可复现性从文件记录项目版本在配置时记录 Git 哈希在构建时记录 Git 哈希引言对于大多数项目,源代码是通过版本控制系原创 2024-05-15 18:55:50 · 390 阅读 · 0 评论 -
CMake 秘籍(二)
原文:zh.annas-archive.org/md5/ecf89da6185e63c44e748e0980911fef。原创 2024-05-15 18:55:19 · 498 阅读 · 0 评论 -
CMake 秘籍(八)
config.h文件是从/* ... */从11平台检查的一个很好的资源是这个页面:www.vtk.org/Wiki/CMake:How_To_Write_Platform_Checks。在中,我们可以检查需要执行哪些平台检查以设置相应的预处理器定义。我们将使用),并确保我们不会破坏现有的 Autotools 构建,我们将复制到,并将所有更改为。在endif()foreach(然后,我们将 CMake 选项从主intmain ()int n;;return 0;原创 2024-05-15 18:54:44 · 447 阅读 · 0 评论 -
CMake 秘籍(六)
原文:zh.annas-archive.org/md5/ecf89da6185e63c44e748e0980911fef。原创 2024-05-15 18:54:08 · 515 阅读 · 0 评论 -
CMake 秘籍(一)
原文:zh.annas-archive.org/md5/ecf89da6185e63c44e748e0980911fef译者:飞龙协议:CC BY-NC-SA 4.0前言计算机软件几乎存在于我们日常生活的方方面面:它触发我们的闹钟,推动我们的通信、银行业务、天气预报、公交时刻表、日历、会议、旅行、相册、电视、音乐流媒体、社交媒体、餐饮和电影预订,从黎明到黄昏。我们周围的软件包含许多层:应用程序建立在框架之上,框架建立在库之上,库使用更小的库和可执行文件,一直到底层更小的软件组件。库和可执行文件原创 2024-05-15 18:52:57 · 403 阅读 · 0 评论 -
CMake 秘籍(五)
原文:zh.annas-archive.org/md5/ecf89da6185e63c44e748e0980911fef译者:飞龙协议:CC BY-NC-SA 4.0第九章:超级构建模式在本章中,我们将涵盖以下内容:使用超级构建模式使用超级构建管理依赖:I. Boost 库使用超级构建管理依赖:II. FFTW 库使用超级构建管理依赖:III. Google Test 框架将项目作为超级构建进行管理引言每个项目都必须处理依赖关系,而 CMake 使得在配置项原创 2024-05-15 18:52:19 · 404 阅读 · 0 评论 -
beginnersbook C 语言教程·翻译完成 | ApacheCN
来源:ApacheCN beginnersbook 翻译项目译者:飞龙协议:CC BY-NC-SA 4.0首先学习 C 基础知识如何安装 Turbo C++:编译并运行 C 程序C 程序结构 - 第一个 C 程序C 关键词 - 保留字C 中的决策控制语句C 编程中的if语句C - if..else,嵌套if..else 和 else..if语句C 编程的sw...原创 2019-08-23 12:08:08 · 31313 阅读 · 0 评论 -
C++参考的翻译或校对
做新年规划的时候,我说过要翻译C++常用类的参考。C++的参考,其实别人已经翻译完了,只是部分内容需要校对。由于网站结构中大量使用了模板,同一个函数只需要翻译一个地方,所以四天就弄完了。而且我没有翻译函数层级的页面,所以比较快。C++的参考其实最需要翻译。因为C++为了填C继承过来的坑,标准库增加了很多用于替代的设施。而国内的教程更新缓慢,这份参考如果不翻译,我估计到了2020年也不会完全普及。以下原创 2016-02-07 22:27:52 · 38725 阅读 · 0 评论 -
[2013.9.27][cpp]一个简单的链接栈模型
学数据结构的一点想法LinkStack.h文件:原创 2014-05-16 21:31:22 · 38273 阅读 · 0 评论 -
[2013.11.13][cpp]检测机器大端或者小端
今天在csdn上看到的 自己改进了一下发出来原创 2014-05-16 18:53:16 · 39535 阅读 · 0 评论 -
[2013.9.15]关于string::nops为什么是-1
const size_t string::nops = -1;大家可能看到这条定义有些疑惑 为什么找不到字符串要返回-1呢size_t是unsigned int类型 -1是int类型那么同等大小的有符号和无符号转化的时候 仅仅更改数据解释方法 数据本身是不会变的由于计算机表示负数是按照补码来的 -1用无符号数的规则解释就成了UINT_MAX一个字符串的长度原创 2014-05-16 18:46:31 · 40579 阅读 · 0 评论 -
c++ cout 控制精度、宽度、进制
设置以上这些属性均有两种写法一种是调用cout的方法 暂且叫做方法写法一种是用到iomanip的函数 叫做控制器写法一、精度控制器写法:cout cout 方法写法:cout.precision(5);cout.setf(ios::fixed);二、宽度控制器写法:cout 方法写法:cout.widt原创 2014-03-06 20:11:21 · 39639 阅读 · 0 评论 -
[c/c++]可变参数加法
p.s. 无聊研究了一下这个函数声明:int add(int count, ...);调用范例:add(5, 1, 2, 3, 4, 5);代码如下:int add(int count, ...){ va_list va; va_start(va, count); int sum = 0; for(int i = 0; i < count; i++) sum += va_原创 2013-12-06 18:57:29 · 40029 阅读 · 0 评论 -
【备忘录】c++ 整形浮点<=>字符串 类型转换
一、C风格字符串1.中的转换函数 atoi atol atollitoa ltoa ultoa lltoaatof ecvt fcvt gcvtstrtol strtoul strtoll strtod2.sprintf sscanf (功能更强大)二、std::string1.标准库转换函数 (using namespac原创 2013-07-13 12:38:52 · 40027 阅读 · 1 评论 -
[2013.8.29]马甲去重复 c++源码
#include #include #include #include #include using namespace std;int main(){ try { string ifile; cout << "请输入要去重复的文件" << endl; cin >> ifile; cin.sync(); string ofile;原创 2014-05-16 18:36:10 · 40803 阅读 · 0 评论 -
[c/c++]小议几个写缓冲区的函数
1. strncpychar *strncpy(char *dest, char *src, size_t num);strcpy没得说,它自动补NULL,而且你得给他足够大的空间,一般是读src的长度n然后动态分配(n + 1)大小的内存。strncpy呢,他的行为是,复制src的前num个字符到dst,如果src的长度大于等于num,则不补NULL;如果小于num,则剩原创 2013-12-04 17:21:18 · 40426 阅读 · 0 评论 -
C++11标准库 - array
C++11标准库 - arraystd::array是原生数组的封装,它存放于栈上且大小固定,性能也与之相同。在原生数组的基础上,它添加了范围检查,以及其它的STL的相应特性,比如复制、交换、迭代器、查询大小。按照C++11的规范,应该抛弃原生数组,所有使用原生数组的地方,都应按需换成vector或者array。对于固定个数的一组值,可以考虑使用std::array。初始化std::array属于简原创 2016-01-19 11:45:23 · 41650 阅读 · 0 评论 -
C++ 现代编程风格速查表
栈上数组// naive:int arr[10];memset(arr, 0, sizeof(a));// modern:// #include <array>std::array<int, 10> arr;arr.fill(0);堆上数组// naive:int *arr = new int[10];memset(arr, 0, 10 * sizeof(int));// modern原创 2016-01-20 20:47:03 · 39163 阅读 · 0 评论 -
C++中类成员函数作为多线程的入口
搜了一圈答案,基本上都是原创 2014-05-25 12:39:32 · 42309 阅读 · 0 评论