技术文章
活出自信
无可奉告
展开
-
fatal error C1047 解决方法
使用静态库的时候出现的问题,根据错误描述,怀疑是lib不兼容,且我的lib是VS2005编写的,而引入lib却是在VS2008下。根据MSDN的提示,似乎只能把lib的工程转换为VS2008的工程并重新编译才能解决,但仔细思索之后感觉这个现象实在不符合逻辑,向下兼容是这种工具最基本的要求。进行了一些尝试,解决方法如下:打开lib的工程,依旧使用VS2005,在Release模式下:转载 2013-08-21 15:02:12 · 4938 阅读 · 0 评论 -
C语言打印自己
今天在网上看到了一个C语言趣味小程序:打印自身代码。程序代码如下:1char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(s,34,s,34);}程序的运行结果如下:1char*s="char*s=转载 2013-07-24 10:27:07 · 4599 阅读 · 0 评论 -
Warning: skipping non-radio button in group
Question: 最近在开发中,设计了一个对话框来进行一系列的设定,其中有一组Radio Buttons(单选按钮),但在Debug下,发现对话的弹出有点延迟,经过分析,确定是因为在对话框弹出之前,先TRACE出了一系列的警告,警告的内容就是"Warning: skipping non-radio button in group".Reason: 经过分析MFC的源代码,发现这个转载 2013-06-27 17:04:25 · 2496 阅读 · 0 评论 -
结构体数组初始化
结构体数组初始化2010-06-19 00:25与诸君共进步 | 分类:其他编程语言| 浏览4497次struct city{ char name[20]; double population; double housing; double ave;};city cities[2];cities[0]={"A",10000,11};citie转载 2013-03-26 11:01:30 · 23746 阅读 · 1 评论 -
删除一个指定路径的文件夹
BOOL CABCToolDlg::DeleteDirectory(char *DirName){ CFileFind tempFind; char tempFileFind[200] = {0}; memcpy(tempFileFind, DirName, strlen(DirName)); _tcscat_s(tempFileFind, _T("*.*")); BOOL原创 2013-02-26 19:33:47 · 555 阅读 · 0 评论 -
获取物理磁盘物理索引号
int GetPhysicalDriveIndex(char cLable){ char szDriverName[64] = "\\\\.\\C:\0"; szDriverName[4] = cLable; int PhysicalDriveNum = -1; HANDLE hDev = CreateFile(szDriverName,原创 2013-03-13 09:36:00 · 2050 阅读 · 0 评论 -
比较文件和磁盘剩余空间大小
//遍历文件夹函数 DWORD64 GetFolderSize(LPCTSTR lpPath) { DWORD64 dwSize = 0; TCHAR szFind[MAX_PATH] = {_T("\0")}; WIN32_FIND_DATA findFileData; BOOL bRet; _tcscpy_s(szFind, MAX_PATH, lpPat原创 2013-03-12 19:25:50 · 969 阅读 · 0 评论 -
C++初始化列表问题,类中有一个对象类型的数组成员变量,在初始化列表中初始化时报错“[]”操作符语法错误
数组作为成员变量时只有默认初始化,也就是无法传递参数。有两种变通方案:你可以把对象数组改成指针数组,或者把ClassB类的构造和初始化分开。方案一:class ClassA{private: ClassB* arrayOfObjectClassB[2];public: ClassA(int i){ arrayObjectOfCl原创 2013-03-12 15:10:22 · 3535 阅读 · 1 评论 -
比较要拷贝的文件大小和磁盘的剩余空间大小
BOOL CABCToolDlg::CheckDiskSpace(CHAR cDiskLable, CString csPcFilePath){ // 判断磁盘空间是否大于文件大小 CString csDisk; csDisk.Format("%c", cDiskLable); csDisk += ":"; ULARGE_INTEGER pDiskUserAvalibleS原创 2013-02-26 19:32:30 · 796 阅读 · 0 评论 -
获取磁盘空间大小
ULARGE_INTEGER pDiskUserAvalibleSpace; ULARGE_INTEGER pDiskTotalSpace; ULARGE_INTEGER pDiskRemainSpace; CString csErrorOfDiskSpace = csDisk; GetDiskFreeSpaceEx((LPCTSTR)csDisk, &pDiskUserAvali原创 2013-02-26 19:31:20 · 493 阅读 · 0 评论 -
10个VisualStudio原生开发的调试技巧
英文原文:10 MoreVisual Studio Debugging Tips for Native Development 我最近遇到了一篇Ivan Shcherbakov写的名为10+个关于Visual Studio的强大调试技巧的文章。然而这篇文章只是提供了一些相对基本的关于Visual Studio的调试技巧。这里至少还有一些同样有用的其他技巧。因此,我整理了一些工转载 2013-12-23 19:48:32 · 1603 阅读 · 0 评论 -
ULONG64转CString
CString str;ULONG64 ulData = 0x1234123412341234;str.Format("SN:%I64u",stDiskInfo.uShowCurrSN);原创 2013-12-25 11:20:55 · 1702 阅读 · 0 评论 -
vector排序
1、typedef struct STMAPSIZE{UINT index; UINT size; // 按照size值由小到大排序bool operator {return (size }} MAPSIZE;2、vector vecPlaneIdx;往vecPlaneIdx中压入元素......原创 2014-02-07 11:33:47 · 612 阅读 · 0 评论 -
vs2010 MFC 点击对话框按钮无法创建响应函数
IDE:vs2010问题出现的步骤:1、通过mfc创建一个对话框;2、为对话框创建对话框类;3、双击对话框上的“OK”按钮,创建按钮点击事件函数成功;4、移动对话框类的位置,同时在工程中删除对话框类,并重新加载新位置的对话框类;5、双击对话框上的“OK”按钮,可以跳转到响应函数,但是点击“cancel”按钮,无法创建对应的响应函数,也无法通过向导添加响应函数。原创 2017-10-26 16:02:39 · 4127 阅读 · 0 评论 -
samsung 7420 在UFS烧录系统流程(ufs不存在)
本文未完待续drivers\block\scsi_ufs.c int ufs_init(int mode)/* 1. called by arch/lib/board.c*/int ufs_init(int mode){ int res = 0, i;#if !SD_FIRM_IN && !FIRM_IN_UFS if ((mode == 2) && (e原创 2017-08-02 17:55:59 · 1526 阅读 · 0 评论 -
fastboot系统更新代码流程分析
说明:本流程基于Android4.4.2中的fastboot源代码讲解,该代码路径在"/system/core/fastboot"下。1、从fastboot.c文件的main函数开始:int main(int argc, char **argv){ int wants_wipe = 0; int wants_reboot = 0; int wants_reboot原创 2017-07-19 17:24:19 · 3269 阅读 · 0 评论 -
linux驱动相关知识整理
由于工作的需要,需要去看emmc驱动的代码,根据我的学习流程,先总结一下对驱动架构的了解。一、构造和运行模块1.1、模块的加载和卸载Linux有许多功能是通过模块的方式,在需要时才载入kernel,如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。insmod:加载模块,需要指定完整的路径和模块名字modprobe:加载有原创 2016-07-25 15:26:08 · 1822 阅读 · 0 评论 -
linux下将移动硬盘的数据拷贝到PC
1、插上移动硬盘;2、使用sudo fdisk -l查看当前原创 2014-07-01 11:07:50 · 3973 阅读 · 0 评论 -
error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartu
error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartu 2012-04-30 15:03:49| 分类: Experience|举报|字号 订阅一、解决方法1.进入project->setting->c/c++, 在categor转载 2014-03-26 18:05:22 · 720 阅读 · 0 评论 -
学习笔记 VS2005内存泄露检查(网络转载)
内存泄露的含义是:拿走了一块“堆”内存块,在某检查点处,发现没有归还这个内存块。如果是: 地址A = malloc(N); 因为没有调用free(地址A),所以内存泄露了。如果是: 地址B = new 类型T; 因为没有调用delete 地址B,所以内存泄露了。如果是:从用户的内存池中取一个内存块,没有调用相应的归还给内存池的操作,也认为是“内存泄露”。从哪里拿了一个东西,要归还到转载 2014-04-02 14:06:55 · 612 阅读 · 0 评论 -
VS忽略一个警告
#pragma warning(disable:4251)原创 2014-03-21 16:37:41 · 5939 阅读 · 0 评论 -
先序,中序,后序遍历
今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明。首先,我们看看前序、中序、后序遍历的特性: 前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树转载 2014-03-06 15:05:44 · 876 阅读 · 0 评论 -
进程线程的同步和通讯
一、进程/线程间同步机制。临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的转载 2014-02-26 11:38:40 · 641 阅读 · 0 评论 -
在当前路径创建一个报告文件
void CABCToolDlg::CreateReportFile(CHAR cDiskLable){ CTime time = CTime::GetCurrentTime(); m_csReportFileName = GetCurrPath(); m_csReportFileName += "\\ABCTestReport\\"; if (!::PathFileExist原创 2013-02-26 19:34:57 · 500 阅读 · 0 评论 -
从PC拷贝文件到磁盘
void CWindowOperate::CopyFileToDisk(const CString csPcFilePath, const CString csDiskFilePath){ char pFrom[MAX_PATH] = {0}; char pTo[MAX_PATH] = {0}; int strLength = csPcFilePath.GetLength() +原创 2013-02-21 10:29:22 · 472 阅读 · 0 评论 -
浏览打开获取文件夹路径
众所周知,CFileDialog 只能选择要打开的文件而不能选择要打开的文件夹,下面介绍一种像CFileDialog 选择文件一样选择文件夹的方法,代码如下: ////////////////////////////////////////////////////////////////////////////功能: 像CFileDialog浏览打开文件一样打开文件夹//转载 2013-02-20 16:03:22 · 616 阅读 · 0 评论 -
Parity和ECC
带有奇偶校验的内存的主要功能 要了解ECC技术,就不能不提到Parity(奇偶校验)。在ECC技术出现之前,内存中应用最多的是另外一种技术,就是Parity(奇偶校验)。我们知道,在数字电路中,最小的数据单位就是叫“比特(bit)”,也叫数据“位”,“比特”也是内存中的最小单位,它是通过“1”和“0”来表示数据高、低电平信号的。在数字电路中8个连续的比特是一个字节(byte),在内存中不带“原创 2012-12-06 15:37:11 · 1806 阅读 · 0 评论 -
调试时dll的某些cpp文件能跑到,某些cpp文件跑不进去
在vs2005环境下,今天在调试一个dll时,发现代码跑到该dll的某个cpp文件中去了,但是进入该dll的另外一个cpp文件确失败了,后来把Tools->Options->Debugging->General->require source files to exactly match the original version的选项取消掉就可以了。原创 2012-10-10 15:07:30 · 707 阅读 · 0 评论 -
MFC中通过控件ID设置控件焦点
某些时候,当我们设置好界面参数,点击应用或者确定的时候,会校验参数的合法性,当参数不合法时,最好将焦点设置到不合法的控件上,下面贴出通过控件ID将焦点设置到指定ID的控件上的代码: CWnd *cWnd = GetDlgItem(IDC_EDIT_PUBLIC_ISO_FILE_NAME); cWnd->SetFocus();原创 2012-10-10 10:02:15 · 8079 阅读 · 0 评论 -
编辑框中只允许输入某些特定字符的解决方法
当我们在向文本编辑框中输入字符时,有时要求只允许输入数字,有时要求只允许输入字符或者可显字符。这个我们可以通过新建一个继承于CEdit的类来实现。MyEdit.h文件#pragma once// CMyEditclass CMyEdit : public CEdit{ DECLARE_DYNAMIC(CMyEdit)public: CMyEdit(); vi原创 2012-10-10 10:34:44 · 3921 阅读 · 0 评论 -
线程中使用UpdateData出错解决方法
最近写一个程序,需要在自己创建的工作线程中更新窗口数据。在使用UpdataData(false)来实现时,总是报错,在网上搜了一下,才知道在工作线程中不能使用UpdateData来更新主线程中的数据。界面的东西,最好就是用主线程(界面线程)去执行相应的操作。要想在子线程(工作线程)里执行界面线程的操作,最好是向主线程发送消息。因为MFC的CWnd用到了TLS,所以不是线程安全的。 解决办法:原创 2012-09-26 15:42:42 · 871 阅读 · 0 评论 -
const和static const的区别
对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.static const 应该就是上面两者的合原创 2012-07-02 08:59:58 · 663 阅读 · 0 评论 -
友元类的用法
友元类的用法 2010-12-02 23:16:30| 分类:学习 | 标签:友元类的用法 |字号大中小 订阅定义: class B { private: B() { } friend class A;转载 2012-06-29 13:53:00 · 1944 阅读 · 0 评论 -
经典多态例题(二)
选择题:1.对于下面的类CA,在32位计算机,四字节对齐的情况下,sizeof(CA)=( )class CA{public: CA( ); virtual ~CA( ); private: int m_itime; public: virtual gettime( ); settime(int itime);};A.4 B原创 2011-11-03 11:10:16 · 1478 阅读 · 1 评论 -
经典多态例题(一)
判断:1.虚函数是可以声明为内联的,这样就一定可以减少函数调用的开销,提高效率。 2.可以在同一个类内部声明如下两个函数: static void fun(); virtual void fun(); 3.父类的析构函数应定已成虚函数。 答案:1.错。 内联是编译时刻决定的,而虚函数是运行时刻动态的决定执行哪段原创 2011-11-03 10:46:36 · 1003 阅读 · 0 评论 -
Getbuffer和ReleaseBuffer
GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。是否需要在GetBufer后面调用ReleaseBuffer(),是根据你的后面的程序是否需要继续使翻译 2011-09-20 11:23:20 · 607 阅读 · 0 评论 -
类成员函数作为线程函数
一般来说,C++的类成员函数不能作为线程函数。这是因为在类中定义的成员函数,编译器会给其加上this指针。请看下列程序: #include "windows.h" #include class ExampleTask { public: void taskmain(LPVOID param); void StartTask();转载 2012-12-25 10:18:50 · 859 阅读 · 0 评论 -
汇编语言调试DEBUG命令
汇编语言调试DEBUG命令 2007-06-04 21:07:16| 分类:其他 | 标签:心情 |字号大中小 订阅 1、显示命令D ① D [地址] ② D [范围]如不指定范围,一次显示8行×16个字节。 -D ;默认段寄存器为DS,当前偏移地址 -D DS:100 / -D CS:2转载 2013-01-06 10:44:57 · 4324 阅读 · 0 评论 -
获取按钮的disable或者visible属性
法一:为该按钮添加一个变量m_btn,使用IsWindowVisible函数就可以判断了if(m_btn.IsWindowVisible() == 1){ MessageBox("按钮可见");}else{ MessageBox("按钮不可见");}法二:if ((m_btn.GetStyle() & 0x10000000) == 0) //invisibl原创 2013-01-23 13:21:44 · 1801 阅读 · 0 评论 -
关于CString总结
前言:串操作是编程中最常用也最基本的操作之一. 做为VC程序员,无论是菜鸟或高手都曾用过CString.而且好像实际编程中很难离得开它(虽然它不是标准C++中的库).因为MFC中提供的这个类对 我们操作字串实在太方便了,CString不仅提供各种丰富的操作函数、操作符重载,使我们使用起串起来更象basic中那样直观;而且它还提供了动态内 存分配,使我们减少了多少字符串数组越界的隐患。但是,我们在使转载 2013-02-18 19:13:37 · 689 阅读 · 0 评论