C/C++
文章平均质量分 68
SurgePing
不要让任何事情成为你不去学习的理由
展开
-
常量字符串到底存放在哪个存储区
字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”中?比如:char *pstr="hello world!";这里,"hello world!"是一个字符串常量,pstr是在栈中的变量。我想问,字符串常量,在哪个内存区域分配空间呢?好像应该不是在“栈区”分配空间吧!!!一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内转载 2013-09-27 10:36:38 · 1405 阅读 · 0 评论 -
windows 下检测进程cpu使用率
以下内容主要来自http://www.sizeof.cn/html/2010/365.html ,对其中的一些细节进行了调整。最近在项目中需要监测某个进程的CPU使用率,原本以为是一个很简单的需求,想用Windows上的性能计数器来进行计算的,但是经过尝试之后,发现Windows性能计数器算出来的值根本不正确,不耐经过互联网的搜索,终于发现了以下计算方法,总的测试,发现结果还是比较精准的。转载 2014-04-14 15:24:40 · 5573 阅读 · 0 评论 -
程序员永远的痛,字符编码的奥秘
字 符编码相信是每个程序员的噩梦,只要是有中文的地方,总是会遇到各种编码的问题,并且这种问题还非常难缠,尤其在linux上,因为上面很多软件都是针对 英语国家开发的,是不会考虑其他语种编码问题。在遇到编码的无数大坑之后,我决定仔细研究下编码问题,因为这就像一道坎一直横在你面前,每次到这里你都会 跌到,每次爬起来之后,你都若无其事,这样的人被称作战士,真正的战士。可惜是个力量战士,做为新时代的智力战转载 2014-04-15 11:00:16 · 1032 阅读 · 0 评论 -
DLL接口的导出
原文作者:Alex Blekhman 翻译:朱金灿 原文来源:http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx 译文来源:http://blog.csdn.net/clever101 C++语言毕竟能和Windows DLLs能够和平共处。 介绍 自从W转载 2014-03-28 12:21:46 · 1092 阅读 · 0 评论 -
ActiveX开发详解
一、ActiveX基础1.1什么是ActiveX ActiveX是COM规范的一种实现,前身是OLE(Object Linking and Embedding)。一般读成:ActiveX Ctronl,译成:ActiveX控制,ActiveX控件。即可用于桌面也可用于网络,是封装、跨平台(兼容)与重用技术的延伸。封装与重用技术大概经历了以下几个历史阶段:明码复用:就是写的转载 2014-03-20 10:32:01 · 1900 阅读 · 0 评论 -
C++开源库【总结】
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SD转载 2014-03-20 10:53:25 · 1173 阅读 · 0 评论 -
C++负数的二进制表示的计算
首先,我们看一下这个数轴,8位二进制表示数值型数据,它应该是落在0~256(不含 256)区间上,当这个数落在0~128(不含128)区间上时,我们说它是一个正数,至于正多少取决于这个数从0点往右走了多少。如:+33对应的二进制是00010001 如果这个数落在后半轴上,也就是128~256(不含256)区间上时,我们说它是一个负数,至于负多少取决于它离终点256还差多少。如:156表示就不再原创 2014-04-03 16:06:16 · 13924 阅读 · 0 评论 -
基于WinCE 5.0环境项目开发心得总结
最近一个关于PDA设备的项目刚结束,在此将这次基于WinCE 5.0环境开发项目的一些心得体会做个总结。1、若你是拿原来支持多字符编码的工程做修改的话,需要注意Unicode字符与ASCII字符的字符串之间的转换问题。标准C++的string 和 char都是ASCII字符,若赋值给宽字符,需要将他们转换成Unicode,如下TCHAR chMsg[2*1024]; memset(原创 2014-03-10 18:42:35 · 1433 阅读 · 0 评论 -
IDE集成开发环境
IDE是Integrated Development Environment的英文缩写,中文意思是集成开发环境,是可以辅助开发程序的应用软件。VC 6.0的IDE是msdev.exe;VS2005或VS2008中IDE是devenv.exe,您可以生成、测试和调试 C#/C/C++/Java 应用程序。VS2005或VS2008中的默认调试器是“C:\WINDOWS\system3原创 2013-02-22 10:50:21 · 2410 阅读 · 0 评论 -
内存的字节存储大小端问题(二)
大端和小端(网络字节序和主机字节序):大端(Big Endian):即网络字节序。小端(Littile Endian):即主机字节序。记忆方式:网络的范围很大,所以大端是网络字节序。大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。如果将一个32位的整数0x12345678存放到一个原创 2013-09-18 16:36:37 · 1100 阅读 · 0 评论 -
wince 禁止程序标题栏上的退出按钮X
最近写的一个测试程序在某些情况需要禁止用户误操作到退出按钮,结合网上找到的资料,实现了禁止和使能标题栏上的退出按钮:代码如下:禁止X按钮,并变成灰色:// 禁止标题栏上的退出按钮CMenu *menu = GetSystemMenu(false);if(menu){menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAY原创 2014-02-21 19:54:53 · 1938 阅读 · 0 评论 -
VS2008 Unicode和多字节编码区别
unicode和多字节字符集是两种不同的编码方式,不同的编码方式下,所对应的一些函数是不兼容的。如果你新的工程是Unicode的,就用Unicode开发,摒弃多字节编码,多字节编码弊端太多了。其实改起来很简单,你把所有的char都改成TCHAR,如果能用CString,尽量用CString。所有字符串函数都换上带_t的版本,比如_tsprintf()原创 2013-12-24 17:43:27 · 6482 阅读 · 0 评论 -
让fstream支持中文路径
fstream 和中文路径 有时候用ifstream或ofstream打开带有中文路径的文件会失败。解决办法:1、使用C语言的函数设置为中文运行环境setlocale(LC_ALL,"Chinese-simplified");2、使用STL函数设置为系统语言环境std::locale::global(std::locale(""));当然选2啦!另转转载 2014-02-19 11:21:20 · 2163 阅读 · 0 评论 -
浅析为什么char类型的范围是-128 ~ +127
2014年1月微软MVP申请开始啦! CSDN社区中秋晒福利活动正式开始啦! 专访钟声:Java程序员,上班那点事儿 独一无二的职位:开源社区经理 “说说家乡的互联网”主题有奖征文 浅析为什么char类型的范围是 —128~+127分类: c语言 2013-02-07 13:44 494人阅读 评论(5)转载 2013-09-27 10:39:21 · 1294 阅读 · 0 评论 -
INI文件的操作
INI文件是WINDOWS的一种文件标准,以文本格式来存储信息 ,他一般用来保存应用程序的一写配置参数 。其中的数据组织格式为:;注释[Section1 Name]KeyName1=value1;注释KeyName2=value2...[Section2 Name]KeyName1=value1KeyName2=value2...INI文件中可以存在多个转载 2013-10-31 10:50:36 · 3352 阅读 · 0 评论 -
Win32编程实现剪贴板监控查看
网络上有很多使用MFC和.NET实现windows剪贴板监控的程序。这里参考《Windows程序设计(第五版)》实现了一个最简单的Win32剪贴板监控程序。采用原始的win32编程,不适用MFC和.NET等的封装库。下面是需要修改的WndProc函数。(整个工程在https://github.com/kingzone/ClipboardMonitor)//// 函数: WndPr转载 2013-11-08 13:15:15 · 2200 阅读 · 0 评论 -
获取控制台的窗口句柄
它很有用操作与控制台窗口应用程序。Win32 API 提供了用于获取没有直接的方法与控制台应用程序关联的窗口句柄。但是,您可以获取通过调用 FindWindow() 的窗口句柄。此函数可检索基于的类名或窗口的窗口句柄。调用 GetConsoleTitle() 来确定当前的控制台标题。然后提供当前的控制台标题为 FindWindow()。 因为多个窗口可能具有相同的标题,您应该更改当原创 2013-11-13 15:18:57 · 2874 阅读 · 0 评论 -
WINCE 移植简要开发步骤和裁剪
WINCE 移植简要开发步骤 一、建立新的 BP 工程,选择适当的 CPU选择一个合适的模板勾选必要的组件选择合适的网络组件,去掉设备不支持的设备组件二、为工程添加设备驱动 1、 添加 SD 卡的支持添加 Device Drivers->SDIO->SD Memory添加 Device Drivers->SDIO->SDIO Host->Sams转载 2012-10-18 20:45:51 · 1194 阅读 · 0 评论 -
SHELLEXECUTEINFO 和 ShellExecuteEx的使用
在日常工作中用到的一些知识,很久没有总结过,前几日参加一个会议,很是无聊。自己思索着自己这两年来所做过的东西,写着写着居然也写下了100个知识点。想把它一条一条总结下来,动笔总不是很容易。就拿这篇文章作为第一篇。 很多东西取之于网络,也有一些自己的心得。才疏学浅,就当一个知识梳理的过程吧。 第一篇 SHELLEXECUTEINFO和 ShellEx原创 2013-12-26 14:43:28 · 1262 阅读 · 0 评论 -
vc++生成程序不需要.net运行环境的可以执行exe程序的方法
Q:vc++编译出来后自动产生了debug文件里面的.exe文件不能直接打开执行?A:在新建VC++工程的时候,其中有一项是选择将MFC库作为共享的DLL还是静态的DLL。因为MFC程序在运行时需要一些DLL文件的支持,你从集成开发环境下编译运行时,有默认的路径来调用这些所需的DLL,因此运行不会有问题。而当你单独运行文件夹下的可执行程序时,如果一开始选择的是作为共享的DLL,则就会因为可原创 2014-01-15 14:59:39 · 9594 阅读 · 2 评论 -
fstream默认不支持中文路径和输出整数带逗号的解决办法
今天项目中打日志,发现带中文路径名就不能成功创建,经网上了解,发现c++的一套文件IO库,默认是不支持中文路径的。下面我们用fstream来创建一个新文件,如果文件路径中带有中文,则创建一般会失败。如下面代码:viewplain#include #include #include #include原创 2014-01-17 14:57:29 · 2373 阅读 · 1 评论 -
Windows 错误报告
当一个进程因为未处理原创 2014-05-13 16:25:45 · 6191 阅读 · 0 评论 -
C++异常与结构化异常SEH的比较
结构化异常处理SEH(全称Structured Exception Handling),是Windows操作系统所提供的对错误或异常的处理机制,是Windows操作系统的一个重要组成部分。在windows系统中,我们在开发应用程序时应该使用结构化异常还是C++异常?原创 2014-05-13 11:39:09 · 3050 阅读 · 0 评论 -
【推荐】经典C++库
1、系统和网络编程库:ACE 除了ACE之外,还有很多系统和网络编程方面的程序库。比如在线程库方面,还有ZThread、boost::thread,如果放大到C/C++领域,还有APR,还有CII。在文件和目录操作方面,boost也有相应的组件,而在网络编程方面有socket++,还有boost::asio,未来的 C++0X中几乎肯定有一个网络编程和一个线程库。然而目前看来,ACE转载 2015-01-12 17:55:21 · 1114 阅读 · 0 评论 -
.manifest是什么文件
ManifestWindows XP通过XML文件来实现这一功能,这些XML文件保存了有关应用程序配置的元数据,这里所说的XML文件,就是Manifest清单文件。Manifest事实上就是一个以.manifest为后缀的XML文件,用于组织和描述隔离应用程序及并行组件,其内部的信息如元素则标识着一个唯一的程序集,和其他信息一起,他们用于COM类、接口及库的绑定和激活,而这些信息,以往都是原创 2015-01-19 11:24:53 · 24549 阅读 · 0 评论 -
Makefile批处理
这篇文章,主要是介绍如何利用批处理去进行工程的批编译。这样就不用去将一个应用程序引用到的其他所有工程库逐个打开编译了,方便开发。同时可以通过makefile去查看工程之间的依赖库。其实我们编译,要么就是直接利用IDE进行编译,要么使用.bat批处理进行。下面主要介绍VS2008的IDE vcbuild.exe去实现工程批处理编译的实现,至于VC6.0,VS2010下对应IDE的批处理实现,原创 2012-12-03 15:18:53 · 6113 阅读 · 1 评论 -
如何:针对64 位平台配置 Visual C++ 项目
如何:针对 64 位平台配置 Visual C++ 项目Visual Studio 2013 其他版本 Visual Studio 2010Visual Studio 2008Visual Studio 2005Visual Studio 2012您可以使用 Visual Studio 项目配置将 C++ 应用转载 2015-04-01 11:40:27 · 1952 阅读 · 0 评论 -
unsigned char和signed char型变量的区别,赋值后它在内存中的存储形式
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,原创 2014-01-02 16:32:31 · 10229 阅读 · 1 评论 -
C++11 常用语法
为了能使用c++11的新特性,注意去升级自己的编译器,使用c++11标准库。现在C++的应用范围已经被一些前端语言的广泛使用压缩了,使用c++11新特性可以提高您的生产力。1 新类型C++ 11新增了long long和unsigned long long,以支持64bit宽度; 新增char16_t和char32_t以支持16位和32位字符表示; 增加了“原始”字符串。2 初原创 2015-07-02 14:31:39 · 5085 阅读 · 0 评论 -
【推荐看】什么时候用C而不用C++?
知乎问题《什么时候用C而不用C++?》:前两天不是有一个问题是“什么时候用C++而不用C”,我一直觉得问错了,难道不是“能用C++就不用C”么?那么当然就要讨论什么时候用C而不用C++啦。一直以来都严格遵循OO的原则来进行开发(用的工具是C#和Qt),直到最近,开始接手某同事的代码,整个项目20多个小工程(代码量并不多),除了界面部分用了MFC这种不伦不类的OO以外,所有的代码都是C写转载 2015-07-29 15:46:53 · 3102 阅读 · 0 评论 -
GraphEdit 的作用和使用
GraphEdit 是一个用于建立和测试Filter graph 的可视化工具。在DirectX SDK.中附带一个可执行程序版本(在SDK目录中的Bin/DXUtils/graphedt.exe)。你可以快速测试你建立的Filter graph是否达到预期的效果,你也可以查看由另一个程序建立的Filter graph。GraphEdit有标准的Windows用户界面,如图:查看到系统中安装的Filter使用GraphEdit,可以查看到系统中所有(正常)安装的Filter。执行菜单命令Graph | In原创 2011-01-18 13:22:00 · 2939 阅读 · 0 评论 -
C++extern用法
extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键。它告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。总之,每个编译单元都必须遵守“先声明后使用”的原则。1。对于extern变量来说,仅仅是一个变量的声明,其并不是在定义分配内存空间。如果该变量定义多次,会有连接错误2。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字 ext原创 2014-01-14 11:31:04 · 9682 阅读 · 0 评论 -
Debug与Release版本的区别
本文主要包含如下内容:1. Debug和 Release编译方式的本质区别2.哪些情况下 Release版会出错2.怎样"调试" Release版的程序-------------------------------------- 一、Debug和 Release 编译方式的本质区别 Debug通常称为调试版本,它包含调试原创 2013-12-17 16:29:28 · 12779 阅读 · 1 评论 -
linux内核设计与实现思想 – C风格的面向对象
原文链接:linux内核学习 – C风格的面向对象linux内核大量使用面向对象的编码风格。然而linux内核是完全使用C写就。学习他们如何使用C模拟面向对象机制很有意思。这种做法很可能被人贬为扯淡,但是的确使用C模拟面向对象机制,使得程序员对类型构造/析构,拷贝/赋值等操作有了绝对的控制权,可以提高对效率的嗅觉,减少错误,同时也避免了对C++编译器各种不同类/对象实现机制的依赖。转载 2014-12-16 11:30:20 · 963 阅读 · 0 评论 -
mfc扩展dll 的调用以及dll中creat出错分析
exe动态加载dll,在扩展dll中创建窗口原创 2014-11-03 11:35:01 · 1749 阅读 · 0 评论 -
VC中操作INI文件的函数
今天需了解vc中如何读取ini文件,发现一兄台博文中介绍的如此详细,因此转帖到此,以备后用......VC中操作INI文件的函数主要有:函数名功能备注GetPrivateProfileInt 读取INI文件指定块中的键名对应的整数值。 GetPrivateProfileSection记取I原创 2013-10-31 10:49:33 · 1859 阅读 · 0 评论 -
CListCtrl 和 CListBox的设置选中问题
CListCtrl 设置选中状态1. 使用CListCtrl的函数SetItemState(int nItem, UINT nState, UINT nMask);如:m_list.SetItemState(index,LVNI_FOCUSED | LVIS_SELECTED, LVNI_FOCUSED | LVIS_SELECTED); //设置行index为选中并高亮(如果未设置F原创 2014-07-01 15:24:00 · 5716 阅读 · 0 评论 -
什么时候需要定义拷贝构造函数
当没有定义拷贝构造函数时,对象值传递时是位拷贝,但是通常情况下,位拷贝已经能满足我们的要求,是我们不必自己定义拷贝构造函数。但是什么时候需要自己定义呢?这里有个简单的规则:如果你需要定义一个非空的析构函数,那么,通常情况下你也需要定义一个拷贝构造函数。如果你定义拷贝构造函数时遇到这样的错误: no copy constructor available or copy construct原创 2014-07-04 15:03:09 · 9641 阅读 · 0 评论 -
项目设计到开发过程中,需要注意的知识点总结
1、根据项目需求,设计出一个原创 2014-08-14 18:31:19 · 1590 阅读 · 0 评论 -
STL容器与默认拷贝构造函数,默认赋值函数
这两个函数都采用“按成员拷贝”的默认方式来实现。也就是说:它们会依次调用每个数据成员的默认拷贝函数和默认赋值函数,除非为它们显示定义了新的构造函数和赋值函数;如此递归下去,真到所有成员都是基本类型为止。但是要知道,基本类型变量(包括指针)的拷贝和赋值实际上是按bit位进行的,因此假如类中有指针成员,这两个默认函数的执行结果将是两个对象中的对应指针成员指向相同的对象,而这在一般情况下关非所期望的,在原创 2014-08-21 16:08:52 · 4305 阅读 · 0 评论