![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 77
LearnLHC
这个作者很懒,什么都没留下…
展开
-
使用 Binder 在 JAVA 与 C++ 之间传输数据
【代码】使用 Binder 在 JAVA 与 C++ 之间传输数据。原创 2022-10-25 11:39:05 · 1484 阅读 · 1 评论 -
七大顶尖 C++ 开源构建系统
Make 无处不在。但这也不难理解,Make 创建于1977 年,在计算机行业的影响深远。Make 广泛适用于所有类 Unix 系统、Macintosh 系统,以及 Windows 的所有版本中,可通过 Cygwin 或本地 nmake 执行。Make 使用简单的文本文件 makefiles 来指导构建。makefile 包含如下规则:规则包含 Target(目标)和 Recipe(命令)。Target 是文件名,在上面的例子中是 shownottell。分号分隔的是 Prerequisites(依赖文件原创 2022-06-24 09:49:51 · 1257 阅读 · 1 评论 -
linux 下定时器 timer_settime
一、创建 定时器 - timer_create 二、开始 定时器 - timer_settime 三、重置定时器 四、取消定时器 五、删除定时器timer_settime 设置 it_interval 和 it_value 的值:三、重置定时器timer_settime 重新设置 it_interval 和 it_value 的值:timer_settime 设置 it_interval 和 it_value 为零:............原创 2022-06-06 16:24:35 · 5723 阅读 · 0 评论 -
C 使用 dlopen 调用库中函数
1、打开方式:#include <dlfcn.h>void* native_handle = dlopen("/lib/libnative.so", RTLD_GLOBAL | RTLD_LAZY);if (!native_handle){ printf("In %s: Cannot open libnative.so, error: %s\n",__FUNCTION__, dlerror());}// 关闭库;int result = dlclose(nati原创 2021-10-15 15:33:15 · 638 阅读 · 0 评论 -
C++如何判断一个程序是 死锁 还是 死循环,如何进行问题定位与分析
目录一、初步诊断:1、死循环:2、死锁:二、进一步定位分析:1、初步诊断为 死循环 时,可转存为 Dump 进行分析2、死锁 情况就比较复杂:三、、代码与图示:1、死循环:2、死锁:一、初步诊断:通过 ‘任务管理器’ 查看软件的状态 与 CPU 使用情况1、死循环:软件状态:未响应CPU:一直保持非0,处于活跃状态原理:如果主线程出现死循环,那么windows将不能从消息队列中取出消息,并进行处理,所以出现卡死现象。为了验证是这个原因导致原创 2021-04-11 12:06:48 · 6979 阅读 · 1 评论 -
有人推荐使用 C++前置声明,有人不推荐使用,理由在哪?
1、前置声明是C/C++开发中比较常用的技巧,主要用在三种情形:1>、变量/常量,例如 extern int var1;2>、函数,例如 void foo();注意类的成员函数无法单独做前置声明;3>、类,例如 class Foo;,也可以前置声明模板类:template class<typename T1, int SIZE>Foo;如果类包含在名字空间中,需在名字空间内做前置声明:namespace tlanyan {class Foo;};,而不原创 2021-03-09 15:17:15 · 640 阅读 · 0 评论 -
与运算(&)、或运算(|)、异或运算(^)的本质 及 用途,文末附加 位运算面试题
一:与运算符(&)and1、运算规则:0&0=0;0&1=0;1&0=0;1&1=1即:两个同时为1,结果为1,否则为02、例如:3&5十进制3转为二进制的3:0000 0011十进制5转为二进制的5:0000 0101------------------------结果:0000 0001 ->转为十进制:1即:3&5 = 13、用途:1)判断 奇偶性一个数 and 1 的结果就是取二进制的原创 2021-01-29 17:10:41 · 15309 阅读 · 0 评论 -
十进制、八进制和十六进制,各种进制存在的意义,为什么要设计出来?
一、表示方法1、八 进制定义:一种以8为基数的计数法,采用 0,1,2,3,4,5,6,7八个数字,逢八进1。编程中如何表达:所以规定,一个数如果要指明它采用八进制,必须在它前面加上一个 0(零),如:123 是十进制,但 0123 则表示采用八进制。这就是八进制数的表达方法。2、十六 进制定义:它由 0-9,A-F 组成,字母不区分大小写。与 10 进制的对应关系是: 0-9 对应0-9; A-F 对应 10-15。N进制的数可以用 0~(N-1) 的数表示,超原创 2021-01-28 18:02:50 · 9005 阅读 · 0 评论 -
可变参数 (__VA_ARGS__)、参数转换成字符串 (#)、两个符号组合成单个符号 (##)
1. __VA_ARGS__ 是一个可变参数的宏很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)##__VA_ARGS__ 宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错一般这个用在调试信息上多一点例如:#define my_print1(...) printf(__VA_ARGS__)..原创 2020-08-07 10:03:07 · 1052 阅读 · 0 评论 -
VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
说明$(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(References)以分号分隔的引用列表被添加到项目中。$(ConfigurationName)当前项目配置的名称(例如“Debug”)。$(PlatformName)当前项目平台的名称(例如“Win32”)。$(...原创 2020-03-03 10:16:45 · 177 阅读 · 0 评论 -
当程序崩溃 产生 崩溃转储文件 (dump) + Windbg调试方法
目录一、前言1. 什么是 core dump2. 无法生成 dmp 文件二、创建 dmp 方法1. 修改注册表 当程序崩溃时 产生崩溃转储文件(dmp)a) OpenDump.bat - 自动生成dmp文件b) 注册表 参数说明:c) CloseDump.bat - 关闭此功能2. 在程序中加入代码3. 任务管理器 - 适用崩溃未立即退出4. WinD...原创 2019-09-18 20:58:21 · 3348 阅读 · 0 评论 -
C++中的操作符重载
一、前序1. 定义运算符重载的 实质 是 函数的重载使用意义 赋予操作符更多的意义,同一个运算符,对不同类型的操作数,所发生的行为不同是 程序更加简洁 写法格式:返回值 operator运算符(参数列表){} 重载的要求: 1、内置类型的操作符不能被重载 2、不能为内置类型定义其他的操作符 3、操作符重载不能改变操作符的优先级 4、操作数个数不能改变 ...原创 2019-04-28 14:48:37 · 246 阅读 · 0 评论 -
C++ STL容器 底层数据结构
一、前言1. 总的来说,STL包括几个部分:容器,算法(泛型算法),迭代器三个主要部分(当然还包含仿函数,适配器等其他部分)2. 容器包含两大类:顺序容器、关联容器顺序容器 元素是按它们在容器中的位置来顺序保存和访问的。3 种 -- 可变长动态数组 vector、双端队列 deque、双向链表 list关联容器 元素是按关键字来保存和访问的。4 种 -- set、multi...原创 2019-04-26 15:18:35 · 582 阅读 · 0 评论 -
c++ map、multimap 的使用方法
一、区别1. Map:一对一;有序( 自动按 key 升序 );可用 [ ] 赋值和取值;采用 红黑树 结构;实现O(lgn)的查找,插入和删除2. Mulitimap:多对多;有序( 自动按 key 升序 );无[ ] 操作;可自定义排序函数;采用 红黑树 结构 multimap<char, int, less<char> > -...原创 2019-04-26 13:52:43 · 4613 阅读 · 0 评论 -
Link错误 - dll 链接不一致 - “QZXing::staticMetaObject”: 不允许 dllimport 静态数据成员 的定义
发生问题的原因有以下几种:1. 在生成 dll 的工程中,未添加导出宏 __declspec(dllexport)2. 在生成 dll 的工程中,有未定义的函数(即:只有声明)3. 在生成 dll 的工程中,纯虚析构函数 /析构函数 必须提供定义,纯虚函数 可以 不提供4. 使用 dll 的工程,包含的 dll 文件或包含头文件,与生成 dll 的工程的 dll 或头文件,不一致...原创 2019-04-09 17:35:23 · 1163 阅读 · 0 评论 -
使用QZXing生成并解析二维码
QZxing 是对 zxing 的一个封装,用于在 Qt 程序中加入条形码和二维码识别的功能。这里就讲讲如何编译和使用这个库。前几年 QZXing 的代码是放到 sourceforge.net 上的,现在迁移到了 github.com。所以下载最新的代码要去:http://https://github.com/ftylitak/qzxing/可以用git 来下载,也可以直接下载打包的 zip...原创 2019-04-09 15:48:45 · 1302 阅读 · 0 评论 -
如何查看dll以及lib文件是32位还是64位
可借助vs自带工具dumpbin.exe执行:dumpbin.exe /headers 文件路径例如:直接输入:dumpbin.exe可查看该命令的详情。如下如所示:另外:VS2013设置工程32位/64位切换默认新建的功能只有32位编译,还需要添加64位。方式一:项目名称上点击右键--> 属性 --> 界面右上角【配置管理器...原创 2019-04-09 09:56:34 · 2660 阅读 · 0 评论 -
C++如何判断一个string字符串,是否是数字
方法一:判断字符的ASCII范围(数字的范围为48~57)#include using namespace std; bool AllisNum(string str); int main( void ) { string str1 = "wolaiqiao23"; string str2 = "1990"; if (Allis转载 2017-10-09 20:41:10 · 31671 阅读 · 2 评论 -
位运算总结(按位与,或,异或)
按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011& 0000 0101 = 00000001 因此,3&5的值得1。 另,负数按补码形式参加按位与...转载 2018-04-11 10:22:32 · 2055 阅读 · 0 评论 -
二进制如何转十进制,十进制如何转二进制
转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二进制1、 正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。 也就是说,将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零就OK咧。哎呀,还是举例说明吧,比如42转换为二进制,如图1所示操作。 42除以2得到的...转载 2018-04-11 10:48:57 · 532 阅读 · 0 评论 -
各种加密算法比较
各种加密算法比较算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA对称加密算法(加解密密钥相同)名称密钥长度运算速度安全性资源消耗DES56位较快低中3DES112位或168位慢中高AES128、192、256位快高低非对称算法(加密密钥和解密密钥不同)名称成熟度安全性(取决于密钥长度)运算速度资源消耗RSA高高慢高DSA高高慢只能用于数字签名ECC低高快低(计算...转载 2018-05-21 22:31:35 · 1493 阅读 · 0 评论 -
二进制、十进制、八进制、十六进制之间的转换
二进制三位一组分开就是八进制, 四位一组就是十六进制一、 二进制与十进制、八进制、十六进制的转换1、二进制与十进制的转换(1)二进制转十进制方法:“按权展开求和”【例】:整数转换 【例】:小数转换 (0.101)2 = 1x2-1 +0x2-2 +1x2-3 = (0.625)10规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依次递增,而十分位的数字的次数是-1,...原创 2018-05-25 20:25:12 · 1985 阅读 · 1 评论 -
LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
更新.NET Framework后 用VS2010编译C++项目时出现这样的错误:LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 方案一:(这个方法比较好,在用qt运行时出现问题也能解决)复制 C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7601.17514_none_b...原创 2018-12-25 11:18:45 · 248 阅读 · 0 评论 -
strcpy及memcpy的内存重叠处理
strcpy和memcpy同是一个类型的函数,但实质上却是不同的,他们的原型分别为:char *strcpy(char *dest, const char *src);void *memcpy(void *dest, const void *src, size_t count);当我们使用这两个函数时都会出现同样一个问题,内存重叠。那么我们就来分析一下内存重叠是如何产的。现在假设有c...原创 2019-02-28 17:04:13 · 850 阅读 · 0 评论 -
C++11 智能指针时要避开的 10 大错误
我很喜欢C++11全新的智能指针,对于那些苦恼于自己管理内存的开发者来说,这是天大的好事。但是,在广泛使用C++11智能指针的两年里,因为使用方法不当而导致程序的效率下降甚至直接crash掉的事情发生过不知道多少此。为了给大家参考,举出下面的一些例子。在开始之前,我们用一个简单的Aircraft类来展示一下这些错误。class Aircraft{private: string m_...原创 2019-03-01 11:17:12 · 486 阅读 · 1 评论 -
【编程练习题】面试常考C语言里库函数-atoi.itoa.atof.strcmp.strcpy.memset.memcpy
这些函数的代码都很短小,但是面试官对你这几行短小的代码抱有很高的期望。 首先,正确性!实现得都不正确,那还搞毛啊,其他的小问题肯定谈都不用谈了,直接out!正确性要注意的地方,每个函数的功能起码要了解(memmove等),边界的检查不能出错;返回值也是要注意的地方。 其 次,assert不能少!对指针有效性的检查是非常必要的,特别是在memcpy中,存在两个assert,分别检...原创 2019-03-06 11:11:58 · 257 阅读 · 0 评论 -
【编程练习题】实现一个算法,确定一个字符串的所有字符是否全都不同。假使不允许使用额外的数据结构,又该如何处理。
在编写算法之前,要先确认是ascii字符串还是unicode字符串Ascii码表最多就256个字符:以一个字节来存放一个 ASCII 字符 1byte = 8bit,故最多能存放2^8 = 256个字符标准ASCII码:是 7 位编码,多余出来的一位(最高位)在计算机内部通常保持为 0 (在数据传输时可用作奇偶校验位)。共128个字符0~31及127(共33个)是控制字符或通信专用...原创 2019-03-06 11:32:19 · 797 阅读 · 0 评论 -
【编程练习题】用C或C++实现void reverse( char* str)函数,即反转一个null结尾的字符串,不分配额外空间,就地反转
void reverseLHC( char *str ){ char* end = str; char tmp; if (str) { while(*end) { //找出字符串末尾 ++end; } --end; //回退一个字符,最后一个为null字符 //从字符串首尾开始交互两个字符,直至两个指针在中间碰头 while(str < end)...原创 2019-03-06 11:50:36 · 750 阅读 · 0 评论 -
C++ 使用 fstream 实现对象的序列化和反序列化
序列化: 将数据结构或对象转换成二进制串的过程。反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。下面就用相关函数实现普通的字符文件操作 和 二进制文件操作。代码注释很详细普通文件操作#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <fstream>using...原创 2019-03-29 16:03:32 · 2716 阅读 · 0 评论 -
B/S 和 C/S 的优缺点
原创 2019-03-28 11:31:21 · 1445 阅读 · 0 评论 -
char类型 转 std::string
{ char cEntityID[32]; std::string strEntityID; //当cEntityID的值为32位时(即:填满整个空间); //cEntityID的最后一位‘\0’是没有的; //所以不能直接转换,转换方式如下: char * tempBuff[33] = {0}; memcpy( tempBuff, cEntityID, 32 ); strEn原创 2017-07-16 11:12:58 · 3164 阅读 · 0 评论