
C/C++类
xsophiax
这个作者很懒,什么都没留下…
展开
-
C/C++ 取整函数ceil(),floor()
使用floor函数。floor(x)返回的是小于或等于x的最大整数。如: floor(10.5) == 10 floor(-10.5) == -11使用ceil函数。ceil(x)返回的是大于x的最小整数。如: ceil(10.5) == 11 ceil(-10.5) ==-10floor()是向负无穷大舍入,floor(-10.5) == -11;ceil()是向正无穷大舍入,ceil(-10.5) == -10fix朝零方向取整,如fix(-1...原创 2021-07-08 10:38:50 · 1248 阅读 · 1 评论 -
Python/C++调用DLL中获取运行路径问题
一般在C++的DLL的库中,多使用GetModuleFileName接口来获取当前DLL的执行路径,是非常nice的处理,但是如过把用Python调用DLL,就会发现其在DLL中用GetModuleFileName获取的路径与C++获取的不一样; 调试发现Python调用DLL是把DLL加载Python的根目录下运行,这个时候使用DLL创建临时目录,或获取其运行路径就...原创 2020-03-30 10:41:11 · 1241 阅读 · 0 评论 -
Astyle格式批处理-完美处理C代码
有段时间总觉得C代码风格,真是千人千种风格,尤其在tape-out后,还要对其进行打patch,要获取其function、variable等,更是受不了,于是搞了格式化批处理。::--style=kr / 1tbs::--align-pointer=type / -k1::--align-pointer=middle / -k2::--align-pointer=name / ...原创 2019-12-23 16:11:46 · 850 阅读 · 0 评论 -
解决MFC动态库DDV_MinMaxXXX显示无信息问题
在MFC的DLL库中使用DDV_MinMaxXXX类型函数出现提示为空白状态,形如下面图所示: 经查原因是:DDV_MinMaxXXX进行校验时,其要加载MFC库自带的String(AFX_IDP_PARSE_REAL_RANGE)信息,而这信息在afxres.rc中,为了能加载成功,必须在资源中包含此资源(afxres.rc),如下所示:原创 2015-04-11 09:31:30 · 693 阅读 · 0 评论 -
解决ADO不同PC版本问题
解决ADO因为不同PC版本问题,只要版编译环境下的ADO库拷贝至软件对应目录下,然后再按如下所示即可解决。原创 2015-04-11 09:38:49 · 1041 阅读 · 0 评论 -
使用VS自带的内存监测工具
#include "crtdbg.h"_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);对于比较明显的内存泄漏,vc2008是比较容易定位的,在Debug模式F5运行,退出时会列出引起内存泄漏的问题代码所在文件及行号;但如果是比较隐蔽的内存泄漏,Output输出窗口只会输出部分信息,形式如下:Detected m...原创 2019-03-29 14:42:44 · 4721 阅读 · 0 评论 -
C/C++路径相关API函数接口的整理
写C++,路径的问题一直都让人很头疼,抽空整理一些方法;可以对比着Python中OS.Path相关去看效果会更好。1."./" 加不加都一样,就是指当前目录2."../" 表示当前目录的上级目录,即当前的父目录。(这里的当前目录就是指.vcxproj和当前运行的.cpp文件所在目录,而不是.sln文件所在目录)注意:前面两种在工程文件夹里面执行时没有问题的,但是打包成DLL,被调用...原创 2019-03-29 14:47:58 · 690 阅读 · 0 评论 -
uCos 系统任务状态机
原创 2019-03-29 14:51:31 · 463 阅读 · 0 评论 -
单片机RAM检测算法的改进与C实现
改进算法MNX 如下所示,^ : 表示顺序写入;不带^表示逆序:^(w0); ^(r0,w1); (r1,w0);(r0)伪代码,m表示读取,M表示写入:for (i = 0; i < n; i++){M(i)=0;}for (i = 0; i < n; i++){ if (m(i)=0){M(i)=1;}Else{return fail;}}for ...原创 2019-07-05 11:33:08 · 1862 阅读 · 3 评论 -
解决应用程序无法正常启动0xc0150002问题
在客户端有些PC上会出现如下错误:1. 智人处理方式一般人直接会找RD来解决问题,但是动手能力强的人一般会咨询度娘,看一下为什么会出现此问题。找来找去基本都是找系统日志错误,追根问底看具体是什么错误。然后就会上VS的系统目录下找redist/x86对应的debug 库文件。如下图所示:2. 懒人处理方式直接在网上查找vcredist.exe(x86/x64),直...原创 2019-09-16 10:34:57 · 2710 阅读 · 0 评论 -
使用Application Verifier (AppVerifier)检查资源泄漏
使用Application Verifier (AppVerifier)检查资源泄漏1. AppVerifier的原理是hook分配和释放资源的API,在程序调用这些API时记录信息,在程序退出时报告出未释放的资源。2. 只能检测Native代码。3. 程序正常退出才行,强行杀进程不能得到正确的报告。4. 基于原理,只能做Run-time检测。尽量使用程序的所有功能原创 2015-04-04 18:41:19 · 1313 阅读 · 0 评论 -
Visual C++内存检测工具(Visual Leak Detector) 2.4
Visual Leak Detector是一款免费的、健全的、开源的Visual C++内存泄露检测系统。相比Visual C++自带的内存检测机制,Visual Leak Detector可以显示导致内存泄露的完整内存分配调用堆栈。Visual Leak Detector其实是基于vc自带的检测工具工作的,虽然知道原理的情况下我们自己也可以做出一个功能类似的东西来。但是又何必再造车轮原创 2015-04-04 11:42:28 · 1049 阅读 · 0 评论 -
CSerial串口类
本来想把自己写的CSerial上传,但是看到网上有个类似的,所以就下载后转了一下。#include "serialport.h"#ifndef _WINERROR_#include "winerror.h"#endif///////////////////////////////// defines /////////////////////////////////////#转载 2015-03-16 23:11:55 · 3356 阅读 · 0 评论 -
从注册表中获取BeyondCompare安装路径
HKEY hkey; CHAR _path[MAX_PATH] = "Software\\Scooter Software\\Beyond Compare"; LSTATUS lRet = RegOpenKeyEx (HKEY_CURRENT_USER, (LPCSTR)_path, 0, KEY_READ, &hkey);原创 2015-03-16 22:54:59 · 4158 阅读 · 0 评论 -
消除VC中的skipping non-radio button in group警告
如下图所示,Radio1~Radio11是1组,这是Radio11的Group选项为true,同事Edit(红色标记部分Edit 11)的group也为true,就可以skipping non-radio button in group警告。原创 2015-03-10 23:31:40 · 677 阅读 · 0 评论 -
常用的<algorithm>里的函数
其中firtst,mid,last,mid,nth均为迭代器类型排序默认为升序 排序范围为[first,last) 即first至last前一位sort(first,last)快排stable_sort(first,last)归并排序partical_sort(first,mid,last)堆排序nth_element(first,nth,last)找出第n小的元素放于nth所原创 2015-03-18 22:41:25 · 383 阅读 · 0 评论 -
23种设计模式
1.创建型模式前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:简单工厂模式(Simple Factory);工厂方法模式(Factory转载 2015-03-18 22:47:33 · 578 阅读 · 0 评论