![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
Markus.Zhao
这个作者很懒,什么都没留下…
展开
-
TEA系列加解密算法详解
文章目录TEA系列概述TEA算法介绍TEA加密过程C语言实现:XTEA算法介绍XTEA加密过程C语言实现XTEA算法介绍XXTEA加密过程C语言实现参考TEA系列概述TEA算法是由剑桥大学计算机实验室的David Wheeler和Roger Needham于1994年发明,TEA是Tiny Encryption Algorithm的缩写,以加密解密速度快,实现简单著称。TEA算法每一次可以操作64bit(8byte),采用128bit(16byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮原创 2020-07-20 01:01:09 · 10024 阅读 · 1 评论 -
CMake编程实践(六) 模块使用和自定义模块
文章目录模块使用和自定义模块使用系统预定义的FindCURL模块编写自定义的UtilsBox模块编译执行小结模块使用和自定义模块cmake开发者在开发过程中认为纯粹依靠cmake本身提供的基本指令来管理工程是也一件非常复杂的事情,所以cmake设计成了可扩展的架构,可以通过编写一些通用的模块来扩展cmake, 系统中提供了其他各种模块,一般情况需要使用INCLUDE指令显式的调用,FIND_P...原创 2020-04-25 23:39:32 · 1161 阅读 · 0 评论 -
CMake编程实践(五) 编译静态库和动态库
使用Cmake 编译库本篇使用CMake编译一个动态库和静态库,并安装到系统中,对应的工程是cmake-utilsbox-lib编译静态库指定编译静态库,关键词为static,不添加关键字默认静态库add_library(utils ${LIB_SOURCE})在使用该库的工程中链接都刚才编译的库:target_link_libraries(${PROJECT_NAME} utils...原创 2020-04-25 23:33:28 · 7753 阅读 · 2 评论 -
CMake编程实践(四) 控制指令
文章目录控制指令IF指令基本语法 if-else-endif:基本语法:if-elseif-endif正则比较表达式数字比较表达式:按照字母序的排列进行比较:小括号优先计算WHILE指令FOREACH指令使用列表 FOREACH(loop_var arg1 arg2 ...)使用范围 FOREACH(loop_var RANGE total)使用范围和步进 FOREACH(loop_var RAN...原创 2020-04-25 23:30:56 · 314 阅读 · 0 评论 -
CMake编程实践(三) 常用变量和常用环境变量
文章目录常用变量和常用环境变量cmake 变量引用的方式:自定义变量的方式:cmake常用变量:1. CMAKE_BINARY_DIR2. CMAKE_SOURCE_DIR3. CMAKE_CURRENT_SOURCE_DIR4. CMAKE_CURRRENT_BINARY_DIR5. CMAKE_CURRENT_LIST_FILE6. CMAKE_CURRENT_LIST_LINE7. CMAK...原创 2020-04-25 23:29:01 · 926 阅读 · 0 评论 -
CMake编程实践(二) 常用语法
文章目录CMake常用语法PROJECT 定义工程名称SET 定义变量MESSAGE 输出信息ADD_EXECUTABLE 定义可执行文件INCLUDE_DIRECTORIES 添加头文件路径LINK_DIRECTORIES 添加库的路径TARGET_LINK_LIBRARIES 为target添加共享库INSTALL 安装指令配置CMAKE环境变量ADD_DEFINITIONSADD_DEPEN...原创 2020-04-25 23:26:24 · 543 阅读 · 0 评论 -
CMake编程实践(一) 基础CMake工程入门
文章目录CMake简介CMake 是什么?CMake的工作流程环境要求分析一个简单的CMake工程基本语法规则:编译安装编译生成的应用在哪里?安装到哪里?安装那些内容?CMake简介CMake 是什么?CMake是一个开源的跨平台工具系列,旨在构建,测试和打包软件。CMake用于使用简单的平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile...原创 2020-04-25 23:21:33 · 980 阅读 · 0 评论 -
vscode中配置或添加头文件路径
vscode中配置或添加头文件路径在vscode中按Ctrl+Shift+P 输入configuration 在c_cpp_properties.json中includePath字段中添加待添加的SDK或者库的头文件路径 例:"/usr/local/xxx/include/"{ "configurations": [ { "name": "Li...原创 2020-04-06 15:58:49 · 39989 阅读 · 2 评论 -
Valgrind检测内存泄漏
概述任何长期运行的应用程序都必须正确地管理内存,否则它最终会耗尽所有可用内存并崩溃,如果你使用的是自动为你管理内存的语言,那么祝贺你,如果你用C/C++则需要你负责内存管理,这里有一个valgrind的简短教程,这个工具将对你的程序的任何内存泄漏出具报告。Valgrind是用于构建动态分析工具的仪器框架。有Valgrind工具可以自动检测许多内存管理和线程错误,并详细描述程序。您也可以使用Va...原创 2019-12-30 23:41:52 · 1128 阅读 · 0 评论 -
error: expected '(' before 'void' __ASM void xxx
概述使用gcc 编译时才会出现这种错误,在keil中虽然会标红,但可以正常编译解决去掉函数名称前的__ASM使用__ASM volatile()将汇编语句包裹起来例如:__ASM void MSR_MSP(u32 addr){MSR MSP, r0 //set Main Stack valueBX r14}修改成下面void MSR_MSP(u32 addr){_...原创 2019-10-12 23:54:33 · 8617 阅读 · 2 评论 -
C++ lock_guard 自动释放锁
概述根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁。最终的结果就是:在定义该局部对象的时候加锁(调用构造函数),出了该对象作用域的时候解锁(调用析构函数)。使用方法首先需要包含mutex头文件然后创建一个锁 std::mutex mutex在需要...原创 2019-07-22 12:53:12 · 3999 阅读 · 0 评论 -
VSCode CMake 安装与配置详解
概述在windows上使用cmake编译C/C++程序时,首先需要CMake,安装gcc/g++编译环境,然后使用VSCode 以及配置下CMakelist.txt。所需工具:VSCode (需要安装以下插件)C/C++C++ IntellisenseCMakeCMake toolsCMake Tools HelperCMakeMinGW安装CMake下载链接:...原创 2019-06-25 00:35:28 · 75489 阅读 · 30 评论 -
vscode 优化.vscode/ipch(解决格式化失效以及占用存储空间大的问题)
概述使用vscode打开一个文件夹,然后随便编辑几个C++代码文件,跳转几个函数,然后就能看到在该文件目录下生成了一个.vscode的文件夹然后进入到.vscode文件夹后,继续进入ipch文件夹随便打开一个文件夹可以看到每个缓存目录中缓存文件大小为2M解决占用存储空间大ipch文件夹内包含缓存的预编译头文件(PCH),vscode使用的时间越长,那么这个文件夹内的缓存就越...原创 2019-05-27 00:07:40 · 7168 阅读 · 1 评论 -
C/C++ 开发利器 CLion安装与配置
概述CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE,它是以IntelliJ为基础设计的,同时还包含了许多智能功能来提高开发人员的生产力,提高开发人员的工作效率。这个强大的IDE不仅可以帮助开发人员在Linux、OS X和Windows上来开发C/C++,同时它还使用智能编辑器来提高代码质量、自动代码重构并且深度整合CMake编译系统,从而提高开发人员的工...原创 2019-04-14 22:28:35 · 12138 阅读 · 1 评论 -
#pragma once与 #ifndef比较
在C++的编程中为了避免同一个文件被include多次,一般有以下两种方式,在能够支持这两种方式的编译器上,这两种方式并没有太大的区别。1. #ifndef#ifndef的方式兼容C语言,主要依赖于宏名字不能冲突,这不仅可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心"撞车",可能就会导致头文件明明存在,编译器却一直...原创 2019-03-31 18:12:38 · 279 阅读 · 0 评论 -
C++ String去除头尾空格 实现trim()方法
虽然C++11的标准库中并没有提供trim()方法,但我们可以使用string的find_first_not_of,和find_last_not_of方法实现trim()#include <iostream>#include <string>std::string& trim(std::string &);int main() { st...原创 2019-03-31 17:51:24 · 8791 阅读 · 1 评论 -
C++ find_first_not_of() 和 find_first_of() 和 find()
find_first_not_of()函数查找当前string与指定的字符串中任意一个字符都不相符的字符,并返回该字符在字符串中第一次出现的位置。size_t find_first_not_of ( const string& str, size_t pos = 0 ) const;size_t find_first_not_of ( const char* str, size_t ...原创 2019-03-31 15:26:18 · 3349 阅读 · 0 评论 -
C++ this指针
意义系统在创建对象时,默认生成的指向当前对象的指针,这样做的目的,就是为了带来方便。作用1.避免构造器的入参和成员名相同。2.基于this指针的自身引用还被广泛的应用于那些支持多重串联调用的函数中,比如连续赋值。3.每个类成员函数的参数列表中,会由编译器自动传入this参数(this指针指向当前对象),以下仅是示例this是如何被传入的,现实中这样写编译器会报错的。MyString *...原创 2019-03-31 11:32:31 · 179 阅读 · 0 评论