在修复机械键盘个别键失灵怎么修复后有二个键不工作w和C究其原因是什么?

键盘上所有键及其快捷键都各代表什么意思_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
键盘上所有键及其快捷键都各代表什么意思
&&键盘上所有键及其快捷键都各代表什么意思
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩10页未读,
定制HR最喜欢的简历
你可能喜欢C++/C - 随笔分类 - DoubleLi - 博客园
随笔分类 - C++/C
摘要: Qt Creator支持中文,启动速度比Eclipse、Netbeans更快,界面也更美观,跟输入法Fcitx协作良好(光标跟随)。 你既可以把Qt Creator当代码编辑器作为vim辅助,好处在于Qt Creator能够自动parse项目,形成友好快速的智能提示,而且你也同样可以使用Qt Cre
摘要: 玩转Windows服务系列——创建Windows服务一文中,介绍了如何快速使用VS构建一个Windows服务。Debug、Release版本的注册和卸载,及其原理和服务运行、停止流程浅析分别介绍了Windows服务的注册、卸载、运行、停止的简单流程。那么今天就来介绍一下如何使用开源库Boost.Ap
摘要: Visual LeakDetector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。它的特点有:(1)、它是免费开源的,采用LGPL协议;(2)、它可以得到内存泄露点的调用堆栈,可以获取到所在文件及行号;(3)、它可以得到泄露内存的完整数据;(4)、它可以设置内存泄露报告的级别。
摘要: 1.1 DllMain简介 跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的。 The DllMain function is an optional method of entry
摘要: 现在很多语言都内置了线程池实现,但C++中却没有。本文列举一些C++实现的线程池工具。 Boost.Threadpool 项目首页:https://threadpool.sourceforge.net Boost.Threadpool是一个基于Boost、跨平台的C++线程池库。Boost.Thre
摘要: 简介 Pebble定位为一个好用、可靠、高性能、易扩展的分布式开发框架,支持多种使用方式: 使用完整的pebble框架 独立使用各pebble子模块 在其他框架中嵌入pebble框架。 Pebble具备良好的扩展性,可非常方便的扩展对接现有系统。基于该框架,可以让开发者只需专注于业务逻辑的实现,而不
摘要: 对于托管代码调用非托管DLL文件,已经是非常普遍的事情,下面写一下如何通过托管代码(C#)像调试托管代码一样调试DLL中的代码。 注意:(1)【dll工程和调用dll的exe工程需要在同一个解决方案中】 (2) 64位与32位生成的路径不一样,这个在设置路径的时候,一定要千万小心。否则可能会导致32
摘要: 信号量的主要函数有: sem_init用于对指定信号初始化,pshared为0,表示信号在当前进程的多个线程之间共享,value表示初始化信号的值。 sem_wait可以用来阻塞当前线程,直到信号量的值大于0,解除阻塞。解除阻塞后,sem的值-1,表示公共资源被执行减少了。例如:如果你对一个值为2的
摘要: 背景 之前写图像算法的程序都是在window10下使用VS编写,VS这个IDE结合“ImageWatch.vsix“插件,用于调试opencv相关的图像算法程序十分方便。后因项目需要,需将相关程序移植到Linux系统,才开始研究如何使用VS编写Linux上的Opencv程序。 一、Ubuntu安装相
摘要: Visual Studio 2017 微软的宇宙第一IDE Visual Studio 2017正式版出来了,地址是:https://www.visualstudio.com/vs/whatsnew/ VS2017亮点很多,包括模块化安装、启动速度加快(第一次启动加快50%以上)、github插件、
摘要: 转载地址:点击打开链接 根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成。主要是作为个人学习记录。有错误的地方,Robin欢迎大家指正。 本文介绍如何使用VS来创建、构建、调试一个基于CMake的项目。当编辑该项目时,会使用高级CMake项目子系统来自动
摘要: 字节序(byte order)和位序(bit order) 在网络编程中经常会提到网络字节序和主机序,也就是说当一个对象由多个字节组成的时候需要注意对象的多个字节在内存中的顺序。 以前我也基本只了解过字节序,但是有一天当我看到ip.h中对IP头部结构体struct iphdr的定义时,我发现其中竟然
摘要: 转载地址点击打开链接 1、生成dmp的程序 #include &dbghelp.h& #pragma comment(lib, &dbghelp.lib&)//设置异常处理回调函数SetUnhandledExceptionFilter(UnhandledExceptionFilter);//异常处理
摘要: 最近在做个程序,虽然是小型程序,但是使用的内存量却很大,动辄达到10G。在64位系统上可以轻松实现,无奈我是基于32位的系统进行开发,程序还没跑起来就已经被终止了。 试过很多办法,包括文件内存映射等,效率不高,而且由于32位应用程序的限制,可用的内存地址最高只能到0x7FFFFFFF,能调用的内存到
摘要: 关于32位程序申请大内存问题(1.6G). 我在win7 64系统上面测试Visual studio 10 [c] view plain copy int* Test=new int[0]; int* Test2=new int[0]; [c] vie
摘要: 项目做到一定阶段,常常须要在原来的project上调用外部程序。 Qt为此提供了QProcess类,QProcess可用于完毕启动外部程序,并与之交互通信。一、启动外部程序的两种方式:(1)一体式:void QProcess::start(const QString & program, const
摘要: 在开发网络应用程序时,各个模块之间的数据通信可谓是家常便饭,为了应对这些数据通信时数据交换的要求,程序员发明了各种数据格式:采用二进制数据结构(早期 C 程序员)、采用 XML、采用SOAP(坑人的设计)、采用 URL 编码、采用JSON格式等。客户端与服务端交互时采用这些数据格式进行数据交换时,必
摘要: 闲来无事发现了一个基于C++实现的序列化工具,相比于其他(比如Boost serialization或Google protobuf,恰巧都用过,以后再介绍),使用简单,感觉不错,下面做个摸索。 cereal介绍 cereal是一个开源的(BSD License)、轻量级的、支持C++11特性的、仅
摘要: 前段时间刚试用了一个序列化工具cereal,请看cereal:C++实现的开源序列化库,打算再总结下我对google proto buf序列化库的使用呢, 结果还没动手,大Google又出了一个新的、开源、跨平台的序列化工具:FlatBuffers。那就索性先了解了解这个工具把。 一. 什么是Goo
摘要: @[tools|flatbuffers|opensource] 概述### Google在今年6月份发布了跨平台序列化工具FlatBuffers,提供了C++/Java/Go/C#接口支持,这是一个注重性能和资源使用的序列化类库。相较于Protocol Buffers,其更适用于移动设备,FlatB
摘要: 最近研究vc,windows的东西真是很傻瓜,啥都给你做好,有个好处就是开发方便了。 有个弊端就是完全按微软的一套进行,规则都是它定的,你得知道它的很多api, 开发出来的代码效率不高,不过却可以比较快的实现一些较好的功能,其实软件开发就应该这样 要不每个程序员都从0开始做起,那都停留在Hello层
摘要: https://wenku.baidu.com/view/aec59eef8c7b4bc.html
摘要: 场景:一个简单的TCP 服务器,以实现UPNP的事件体系结构 我在linux平台下,创建一个TCP套接字,绑定到49156端口,向UPNP SERVER发一个subscribe订阅请求,超时时间设置为5minutes. 然后开启一个Thread_Main主接收线程。该线程完成以下工作: (1)调用s
摘要: Daemon Process Daemon Process 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,We
摘要: https://blogs.msdn.microsoft.com/vcblog//introducing-the-universal-crt/ App local UCRT DLLs: C:\Program Files (x86)\Windows Kits\10\Redist\u
摘要: 前言 其实the Universal CRT(通用C运行时库)已经不能算是“下一代”,因为它已经在前两年伴随着Visual Studio 2015和Windows10发布。但是由于之前使用VS2015开发的应用还较少,关注的人也少,相关的文章更少。所以笔者想干脆用一篇文章,深入浅出的介绍一下Univ
摘要: 1,“项目属性,C/C++,代码生成”,“运行库改”为“多线程(/MT)”。* MT开头的是静态引用,MD开头的是动态引用,d结尾的是Debug调试版本,没有d的是Release发布版本,所以就一 共有四个选项。 2,“项目属性,链接器,系统”, “所需的最低版本”,修改为“5.01”。* 5.01
摘要: Windows:使用CoCreateGuid函数(GUID) #include &objbase.h&#include &stdio.h& #define GUID_LEN 64 int main(int argc, char* argv[]){ char buffer[GUID_LEN] = {
摘要: 1 枚举 最大地址长度,这个与Poco::Net::IPAddress中的定义可以类比,不过这里指的是`struct sockaddr_in6 2 构造函数 创建一个 wildcard 的全 0 的 IPv4 的 socket 地址: 用 Poco::Net::IPAddress 和端口号创建 IP
摘要: 1 类型别名 三个时间戳相关的类型别名,TimeDiff表示两个时间戳的差,第二个是以微秒为单位的时间戳,第三个是以 100 纳秒(0.1 微妙)为单位的时间戳: 2 构造函数 当前时间的时间戳: 指定时间的时间戳: 拷贝构造函数: 3 重载运算符 赋值运算符: 比较运算符: 算术运算符与算术赋值运
摘要: POCO库中文编程参考指南(4)Poco::Net::IPAddress 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -& @) 日期:April 14th, 2012 1 Poco::Net::IP
摘要: POCO库中文编程参考指南(3)Poco::Net::Socket 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -& @) 日期:April 14th, 2012 1 SelectMode 2 Soc
摘要: POCO库中文编程参考指南(2)基本数据类型 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -& @) 日期:April 14th, 2012 基本类型在Poco/Types.h头文件中。以下以 GNU
摘要: POCO库中文编程参考指南(1)总览 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -& @) 日期:April 14th, 2012 1 What is POCO? POCO 是什么?这是我最常被人问
摘要: tcp // client program #include &Poco/Net/SocketAddress.h& #include &Poco/Net/StreamSocket.h& #include &Poco/Net/SocketStream.h& #include &Poco/StreamC
摘要: 1.代码 2.编译指令 1 3.运行截图
摘要: 一,简介 ODB是应用于C++的一个开源、跨平台、跨数据库的对象关系映射(ORM)系统。 它可以让你持久化C++对象到关系数据库,而不必处理表、列或者SQL,无需手动编写任何映射代码。 ODB支持MySQL,SQLite,PostgreSQL,Oracle和微软SQL Server关系数据库以及C
摘要: 本文以MySQL数据库为例,其他数据类似。 官方文档和下载 ODB官方首页 官方开发者说明书(开发教程) 安装下载首页(下载与安装教程Windows/Linux) Windows安装步骤(都是英文版,流程虽然详细,但是却略显麻烦,主要是因为ODB的机制造成的) ODB的使用原理 下面介绍ODB的使用
摘要: 1.new 、 delete 、 malloc 、 free 关系 delete 会调用对象的析构函数 , 和 new 对应 free 只会释放内存, new 调用构造函数。 malloc 与 free 是 C++/C 语言的标准库函数, new/delete 是 C++ 的运算符。它们都可用于申请
摘要: 前文在Win32平台上用C++实现了事件对象Event,对线程进行同步,以达到期望目的。这次在Linux平台上实现与之类似的事件对象。与其相关的一组API包括:pthread_mutex_init,pthread_cond_init,pthread_mutex_lock,pthread_cond_w
摘要: 1. 安装cmake: https://cmake.org/files/v3.6/cmake-3.6.0-win64-x64.msi 2. 下载libwebsocket源码: git clone https://github.com/warmcat/libwebsockets.git tag到最后一
摘要: [cpp] view plaincopy [cpp] view plaincopy 生成(Build)工程,在debug文件夹中会生成相应的DLL及LIB文件:facedll.dll facedll.lib 多个类封装DLL 封装好一个类之后,在后面的类可以调用这个类生成的dll,再封装新类的dll
摘要: Libevent官网:http://libevent.org/ windows 7下编译: 编译环境: windows 7 + VS2010 (1)解压libevent到F:\libevent\libevent-2.0.21-stable (2)打开Microsoft visual studio 2
摘要: 用qt的知道,qt有方便简单的信号槽机制,但需要专门的qt工具处理。 如果想直接使信号槽就可以使用sigslot库,或者sigc++库,或者boost中的signals,这里介绍sigslot和sigc++库。 sigslot.h:只有一个头文件,使用简单方便。 sigc++:包含文件多,但功能更强
摘要: 最近在看delta3d开源引擎,最底层封装的消息机制,是基于其has_slots,搜索了一下其资料发现是一个很好用的C++库,先对其简单介绍一下。 首先说下插槽机制。 插槽系统常用的有三种:boost的signals,sigslot,sigc++ 基本功能有: 1.connect 2.disconn
摘要: 采用下面的方法。重新编译了一下依赖的库,OK了。 问题描述: 今天用VS2010编译一个在VS2008下Coding的工程的时候,VS给出了一堆链接错误信息,如下图所示: 在ErrorList里面列出了34个链接错误信息,但仔细看的话,其实很多都是重复的,只有两三个外部符号未正确解析,如下: &pu
摘要: 今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector&struct& mFriendL...std::vector&struct&::iterator
摘要: #ifndef _HIK_EVENT_H_ #define _HIK_EVENT_H_ #ifdef _MSC_VER #include &Windows.h& #define hik_event_handle HANDLE #else #include &pthread.h& typedef st
摘要: 条件变量(Condtion Variable)是在多线程程序中用来实现“等待-&唤醒”逻辑常用的方法。举个简单的例子,应用程序A中包含两个线程t1和t2。t1需要在bool变量test_cond为true时才能继续执行,而test_cond的值是由t2来改变的,这种情况下,如何来写程序呢?可供选择的
摘要: 原始字面量很容易理解,即不进行转义的完整字符串。 最近看了看Python,其中讲到了原始字符串。 Both string and bytes literals may optionally be prefixed with a letter ‘r’ or ‘R’; such strings are
摘要: 我的环境为: Win764 + VS2005 + zlib1.2.8 zlib1.2.8我使用VS2010来编译。 我导入zlib库的代码如下: #include &zlib128/zlib.h&// #pragma comment(lib, &zlib128/zlibwapi.lib&) // 链
摘要: 1、CppCMS简介 CppCMS是一个C++的Web开发框架(不是一个CMS)。它不同于大多数其他Web开发框架,如巨蟒Django , Java的Servlets ,或C++ Wt因为它在设计和调整来处理极高的负荷,而且它的目的是发展的网站,而不是“GUI-Like” Web应用程序。[1] C
摘要: 在使用VC 2005 的开发者会遇到这样的问题,在使用std命名空间库函数的时候,往往会出现类似于下面的警告: warning C4996: strcpy was declared deprecated 出现这样的警告,是因为VC2005中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、
摘要: 禁用所有编译器警告 当“解决方案资源管理器”中有项目选中时,在“项目”菜单上单击“属性”。 单击“编译”选项卡。 选中“禁用所有警告”复选框。 禁用单个编译器警告 在“解决方案资源管理器”中选定一个项目,然后在“项目”菜单中单击“属性”。 单击“编译”选项卡。 在“默认编译器选项”表中,将该警告的“
摘要: 当项目引用到外部源代码后,经常出现4819错误,警告信息如下: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失. 通常的方法是在编译选项中去加个选项,方法如下: 配置属性--c++--命令行 加上 /wd4819
摘要: 在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,更麻烦的是还有可能造成自己代码中产生的警告被淹没在多过的无关警告中,而被忽略掉的情况。 所以要想办法关闭这
摘要: 一直以来我只知道vc设置命令行编译环境的批处理命令是%VS140COMNTOOLS%/Common7/Tools下的vsvars32.bat,(%VS140COMNTOOLS%为定义vs2015公共工具程序位置的环境变量,命令行窗口输入set就能找到,vs2010的对应定义为%VS100COMNTO
摘要: 在公司使用C++ 做开发,公司的大拿搭了一个C++的跨平台开发框架。在C++开发领域我还是个新手,有很多知识要学,比如Dll库的开发。 参考了很多这方面的资料,对DLL有一个基本全面的了解。有一个问题让我有点困惑,普通的导入导出C++类的方式都是使用_declspec(dllexport) /_de
摘要: 此文档是windwos grpc c++ 编译 ,基于 vs2015 编译完成 获取gRPC源码 gRPC是开源框架,项目代码在github上,所以首先要安装github。github安装后,在指定文件夹中,执行Git命令就可以获取gRPC的所有源码。 git clone https://githu
摘要: C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成 Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地
摘要: GIFLIB 是一个 C 语言的 Gif 图像处理库。支持 Gif 图像读写。 如果需要单独处理某类图片格式,以上类库是比较好的选择,如果处理的格式种类比较多,下面的类库是比较好的选择。 ImageMagick ImageMagick 是一个用来创建、编辑、合成图片的软件。它可以读取、转换、写入多种
摘要: Google的C++开源代码项目 v8 - V8 JavaScript EngineV8 是 Google 的开源 JavaScript 引擎。V8 采用 C++ 编写,可在谷歌浏览器(来自 Google 的开源浏览器)中使用。V8 根据 ECMA-262 第三版中的说明使用 ECMAScript,
摘要: 这次的资源涉及到了标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等,C++程序员学习必备! Jason frozen : C/C++的Jason解析生成器 Jansson :进行编解码和处理Jason数据的C语言库 jbson :C++14中构建和迭代BSON data
摘要: 介绍 Juce是一个完全围绕C++语言的类库,用来开发跨平台的应用程序。 完整的用doxgen生成的html形式的API手册可以在这里下到。或者可以从下载页面下载预编译的windows帮助文件。 想获取更多的帮助或信息,请访问JUCE的网站。 许可 Juce发布遵循Gnu Public Licens
摘要: 以这么说现在的人越来越妖精了,本来软件吗,要的是简单稳定实用,但是看现在的趋势是越来越多人注重界面的美化和和效果。比如IM类软件,QQ,飞信还有土的掉渣的MSN等,前两天看了一下YahooUI,觉得不错,ICQ的界面也可以。Windows上界面技术基本都是DirectUI或者近似于DirectUI,
摘要: MSDN中对于在不同的配置下Link的LIB作了说明: C Runtime Library: 开关 对应的库 版本 /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Relea
摘要: Google三维APIO3D O3D 是一个开源的 WebAPI 用来在浏览器上创建界面丰富的交互式的 3D 应用程序。这是一种基于网页的可控3D标准。此格式期望真正的基于浏览器,独立于操作系统之外,并且支持主流的3D显卡,这样就可以在网页中实现效果逼真的3D动画。 绘图引擎RRDtoo 简单的说,
摘要: 对于一个静态链接库L.lib,它的使用者app.exe会静态链接L.lib,意思是app.exe会将L.lib中的代码(app需要的部分,例如函数定义,类的定义等等)链接到app.exe中. 而对于L.lib本身来说,它的CRT(C Run-Time Libraries)有多种配置,这里仅考虑/MT
摘要: char cBuffer[50] ;TCHAR wBuffer[50];1、将cBuffer初始化为空格memset(cBuffer, ' ', sizeof(cBuffer));第三个参数为字节数cBuffer[49] = 0;2、将wBuffer初始化为空格wmemset(wBuffer, _T
摘要: wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式。 在Windows下,wchar_t占2个字节(byte);在Linux下,wchar_t占4个字节 wchar_t类型主要用在国际化程序的实现中,但它不等同于Unicode编码。Unicode编码的字符一般以wchar_t类型存储
摘要: &libzipp& 这库是基于 &libzip& 之上封装的,而 &libzip& 又是基于 &zlib&库封装的,所以要编译 &libzipp& 库就要先编译其他两个库。下载准备:&zlib-1.2.8.tar.gz&&libzip-1.0.1.tar.gz&&libzippp-master.zi
摘要: 最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符
摘要: 目录(?)[-] 需求说明 常见问题 问题分析 参考解决方法 我的解决方案 Stdafxh的原理 目录(?)[-] 需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console Application、MFC Application、Win32 Project等。在
摘要: ,字符编码是计算机技术的基石,想要熟练使用计算机,懂得一点字符编码的知识,还是很有必要的。 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说
摘要: Project Properties -& General-& Character set,里面显示了是不是unicode. Unicode处理String的方式不一样,一定要注意!! 使你的C/C++代码支持Unicode的第一步 定义宏 _UNICODE, 如果定义了宏 _MBCS 则取消它的定
摘要: 由于各种应用,我们需要调用系统的打开文件对话框或者打开文件夹对话框,或两者兼有。今遇到这个情况已经解决,特写下这篇博文。 1.打开文件对话框常用的方法是使用系统的CFileDialog。这里介绍另外一种方法就是使用OPENFILENAME这个结构体和GetOpenFileName()这个函数,可以实
摘要: BCB中使用TOpenDialog选择对话框时,直接OpenDialog-&Execute()弹出的对话框是显示所有文件的,如果我们希望过滤指定的文件后缀名就需要在Execute()前做一些初始化工作,此处主要使用Filter属性。代码如下:[喝小酒的网摘]http://blog.heheheheh
摘要: Boost的thread库中目前并没有提供线程池,我在sorceforge上找了一个用boost编写的线程池。该线程池和boost结合的比较好,并且提供了多种任务执行策略,使用也非常简单。 下载地址: http://threadpool.sourceforge.net/ 使用threadpool:
摘要: 一、 背景说明 在VS环境下,开发C++代码操作PPT,支持对PPT模板的修改。包括修改文本标签、图表、表格。满足大多数软件生成PPT报告的要求,先手工创建好PPT模板,在程序中修改模板数据。 二、 开发环境构建 通过VS2012的Class Wizard创建PowerPoint和Excel的COM
摘要: 原文转自:http://hi.baidu.com/doodlezone/item/74a203155efe26dbbf9042dd UDT文档阅读理解 一、 概述 UDT是一个高性能的基于UDP的数据传输协议,它是为支持高速广域网上海量数据传输而设计,为解决TCP的效率和公平问题,同时提供可靠的数据
摘要: 网上与UDT相关的资料不多,与UDT相关的源码例子更少。最近在接触UDT,也是因为缺少相关的资料,导致学习起来甚感痛苦。下面将我自己这两天弄出来的代码贴出来,希望对在寻找相关资料的童鞋有一定的帮助。与服务端相对应的客户端在另一篇博文中 [cpp] view plain copy [cpp] view
摘要: 上面一篇文章中提出了服务端的,其实这里没有严格意义的服务端和客户端之分,因为我在代码中是基于UDP的,不存在服务端与客户端,两个都是对等的,只是我这里进行一下简单的区分而已。在这里,客户端所进行的主要操作就是首先给服务端发送文件名,然后将文件直接通过fopen(),fread()等一系列的操作将文件
摘要: Windows录音API学习笔记 结构体和函数信息 结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力。 typedef struct { WORD wM 用于波形音频输入设备的设备驱动程序制造商标识符。 WORD wP 声音输入设备的产品识别码。 MMVERSION 
摘要: 写在前面 一开始是打算用这个老接口做讯飞语音识别的程序,在转移到UWP时发现,这玩意在Windows Runtime中屏蔽(弃用)了,将来会更新使用WASAPI的程序 WaveRecorder类代码下载地址 录音无非两种需求: 1. 非实时获得音频,也就是停止录音了你才需要处理它; 2. 实时获取音
摘要: 对于常见的音频播放,使用XAudio2足够了。 时间是把杀猪刀,滑稽的是我成了猪 早在Windows Vista中,M$推出了新的音频架构UAA,其中的CoreAudio接替了DSound、WaveXxx、MediaFundation,通过Core Audio APIs,Windows的音频性能可以
摘要: XAudio2 是一个跨平台的API,在Xbox 360及Windows中得到支持。在Xbox 360上, XAudio2作为一个静态库编译到游戏可执行文件中。在Windows上,XAudio2提供一个动态链接库(DLL)。以下例子只使用了其中的一部分功能,并不全面。详情请看微软技术页的XAudio
摘要: 在用解码器解码音频数据得到PCM音频数据块之后,可以在将数据送给声卡播放之前调节其音量大小,具体的实现函数如下: [cpp] view plain copy void RaiseVolume(char* buf, UINT32 size, UINT32 uRepeat, double vol)//b
摘要: 与上一篇的“C++ 播放音频流(PCM裸流)” 点击打开链接 相对应,本篇是关于用C++实现录音功能的。同样是直接建一个win32控制台程序然后将代码拷过去改个文件名就可以用,也可以下载本人上传的相关工程,这个工程是用VS2013写的,如果是较低的版本就呵呵了。点击打开链接 代码部分如下: [cpp
摘要: 直接上代码,如果有需要可以直接建一个win32控制台程序然后将代码拷过去改个文件名就可以用了(注意将声道和频率与你自己的文件对应)。当然我自己也用VS2008写了个例子上传了,如果有需要下载地址如下:点击打开链接。 这份代码是打开文件截取一段数据然后播放的,可以轻松的经过加一条线程的方式改成网络传输
摘要: fopen()函数: 1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针。 2.函数原型: [cpp] view plain copy FILE * fopen(const char * path,const char * mode); -- path: 文件路径,
摘要: 如果是传递指针,那么会先复制该指针,在函数内部使用的是复制后的指针,这个指针与原来的指针指向相同的地址,如果在函数内部将复制后的指针指向了另外的新的对象,那么不会影响原有的指针;但 是对于传递指针应用,如果将传递进来的指针指向了新的对象,那么原始的指针也就指向了新的对象,这样就会造成内存泄漏,因为原
摘要: C++11引入了lambda表达式,使得程序员可以定义匿名函数,该函数是一次性执行的,既方便了编程,又能防止别人的访问。 Lambda表达式的语法通过下图来介绍: 这里假设我们定义了一个如上图的lambda表达式。现在来介绍途中标有编号的各个部分是什么意思。 将上图的代码片段补充完整: int x
摘要: C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看。本文作为 5 月的最后一篇博客,将介绍 C++11 的 lambda 表达式。 很多语言都提供了 lambda 表达式,如 Python,Java 8。lambda
摘要: 先看这样一段代码 class test { public: test(int i){ m_i=i;} test(){}; void hello() { printf(&hello/n&); } private: int m_i; }; int main() { test *p=new test();
摘要: 函数指针主要的目的是实现与运用相互分离,类的成员函数封装在类里面,运行需要相应的对象来调用,所以在调用这个类的成员函数时候,需要类的函数地址和这个类的对象。 以下是实现的类: class A { public:void DoSth(){printf(&A-DoSth&);} }; 以下是调用的类:
摘要: 篇一、函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名) (形参列表);一般函数的声明为: int fun
摘要: 我们首先复习一下&指向函数的指针&如何使用? [cpp] view plain copy print? void print() { } void (*pfun)(); //声明一个指向函数的指针,函数的参数是 void,函数的返回值是 void pfun =  //赋值一个指向函数的指
摘要: C++11已经出来很久了,网上也早有很多优秀的C++11新特性的总结文章,在编写本博客之前,博主在工作和学习中学到的关于C++11方面的知识,也得益于很多其他网友的总结。本博客文章是在学习的基础上,加上博主在日常工作中的使用C++11的一些总结、经验和感悟,整理出来,分享给大家,希望对各位读者有帮助
摘要: 1、功能说明: 要开发的Web Service功能非常简单,就是一个add函数,将两个参数相加,返回其和。 2、C版本的程序: (1)头文件:SmsWBS.h,注释部分不可少,url部分的IP必须填写当前Linux电脑的IP //gsoap ns service name: SmsWBS//gsoa
摘要: 昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考。 昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考。 首先下载
摘要: 代码下载地址: http://download.csdn.net/detail/mtour/8243527 最近写了个程序需要用到http通讯,由于flash空间比较小,没有考虑 libcurl库,用c++封装了一个http类,实现了http 文件上传和下载 [cpp] view plain cop
摘要: 除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词):用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例:-Wl,-Bstatic -lmysqlclient_r -ls
摘要: 常量存储总结局部变量、静态局部变量、全局变量、全局静态变量、字符串常量以及动态申请的内存区 1、局部变量存储在栈中2、全局变量、静态变量(全局和局部静态变量)存储在静态存储区3、new申请的内存是在堆中4、字符串常量也是存储在静态存储区 补充说明:1、栈中的变量内存会随着定义所在区间的结束自动释放;
摘要: 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简
摘要: 转自:http://gcc.gnu.org/ml/gcc-help/2007-09/msg00205.html `gcc -print-prog-name=cc1plus` -v `g++ -print-prog-name=cc1plus` -v 例如,CentOS 6.3 64bit 下,`g++
摘要: 1、fork + exec fork用来创建一个子进程。一个程序一调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开
摘要: 转载自:http://my.oschina.net/renhc/blog/53580 linux尽量避免使用system。 曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的
摘要: linux下使用system需要谨慎,那么代替它的方法是什么呢? 标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。 popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,
摘要: 首先用man查看下popen的介绍: popen(3) - Linux man page Name popen, pclose - pipe stream to or from a process Synopsis popen总是和pclose一起出现被使用的。popen() 创建一个管道,通过fo
摘要: 本文整理转载自:http://wenku.baidu.com/view/065d62fff705cc.html C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。 一、类型 我们用一定的字符用以表示输出数据的类型,
摘要: [cpp] view plain copy print? [cpp] view plain copy print?
摘要: scandir函数详解 10:51scandir函数:读取特定的目录数据表头文件:#include &dirent.h&定义函数:int scandir(const char *dir, struct dirent **namelist, nt (*select) (const
摘要: 头文件#include &dirent.h& 函数定义:int scandir(const char *dir,struct dirent **namelist,int (*filter)(const void *b), int ( * compare )( const struct dirent
摘要: 原文地址:http://blog.csdn.net/cserchen/article/details/5503556 Linux下编译程序时,经常会遇到“undefined reference to XXX” 报错, 这里总结一些可能的原因和解决方案,给需要的朋友: 说道undefined refe
摘要: 在做项目的过程中有时候为了提升效率,用了多线程的方法来对任务进行分割和应用,后来发现,采用线程池的方法能更好的利用线程资源来计算任务,网上有很多关于如何运行线程池的例子,msdn上也给出了对应的例子:https://msdn.microsoft.com/en-us/library/windows/d
摘要: protobuf的简单的使用,不过还留下了一个问题,那就是之前主要介绍的都是对简单数据的赋值,简单数据直接采用set_xx()即可,但是如果不是简单变量而是自定义的复合类型变量,就没有简单的set函数调用了,下面看一个简单的例子。 在网络游戏中,游戏玩家之间的同步是一个最基本的功能,而同步是通过对坐
摘要: Valgrind 是一款 Linux下(支持 x86、x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和delete),找出内存泄漏问题。 Valgrind 中包含的 Memcheck 工具可以检查以下的
摘要: 首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内
摘要: 环形缓冲区是嵌入式系统中十分重要的一种数据结构,比如在一个视频处理的机制中,环形缓冲区就可以理解为数据码流的通道,每一个通道都对应着一个环形缓冲区,这样数据在读取和写入的时候都可以在这个缓冲区里循环进行,程序员可以根据自己需要的数据大小来决定自己使用的缓冲区大小。 环形缓冲区,顾名思义这个缓冲区是环
摘要: 之前在学习wait和waitpid函数的时候,就对使用宏WIFEXITED来检查获取的进程终止状态产生过疑惑:一般我们在程序中是调用的exit或者_exit函数来退出的,那么wait和waitpid函数获取的终止状态直接就是我们传递给exit的参数不就OK了吗? 后来了解到是我考虑简单了,因为程序退
摘要: 最近在看APUE第10章中关于system函数的POSIX.1的实现。关于POSIX.1要求system函数忽略SIGINT和SIGQUIT,并且阻塞信号SIGCHLD的论述,理解得不是很透彻,本文就通过实际的实例来一探究竟吧。 一、为什么要阻塞SIGCHLD信号 #include &stdlib.
摘要: 下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbenc
摘要: 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecm
摘要: 结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势:(1)、不需要初始化,数组名直接就是所在的偏移;(2)、不占任何空间,指针需要占用int长度空间,空数组不占任何空间。“这个数组不占用任何内存”,意味着这样的结构节省空间;“该数组...
摘要: 其实很早在看LINUX下就看到这个东西,后来在MFC内存池里同样也看到了类似的东西,还依照MFC写过一个类似的小内存池,(MFC用的是return this + 1)后来在李先静的《系统程序员成长计划》里看到了类似的定义,于是心里想着总结一下,结果发现网上已经有牛人总结的很好了,于是乎就转了过来,谢...
摘要: 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解...
摘要: 一.pthread_create()之前的属性设置1.线程属性设置我们用pthread_create函数创建一个线程,在这个线程中,我们使用默认参数,即将该函数的第二个参数设为NULL。的确,对大多数程序来说,使用默认属性就够了,但我们还是有必要来了解一下线程的有关属性。属性结构为pthread_a...
摘要: 一、fork1. 调用方法#include #include pid_t fork(void);正确返回:在父进程中返回子进程的进程号,在子进程中返回0错误返回:-1 子进程是父进程的一个拷贝。即,子进程从父进程得到了数据段和堆栈段的拷贝,这些需要分配新的内存;而对于只读的代码段,通常使用共享内存的...
摘要: fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别:1. fork ():子进程拷贝父进程的数据段,代码段 vfork( ):子进程与父进程共享数据段2. fork ()父子进程的执行次序不确定 vfork 保证子进程先运行,在调用exec 或exit 之前与父进程...
摘要: assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调...
摘要: 在调试程序时,有时候要输出大量数据,如果让printf/fprintf改变输出数据的颜色,那观察数据就方便多了。终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 2...
摘要: 写了一个简单的程序,但是考虑到有一些信息是需要打印在控制台上的,就像在windows上启动apache tomcat时控制台显示的信息一样。琢磨一会儿之后,对printf进行了封装,支持控制台打印日志,支持输出到文件里。不过控制台都是固定颜色的,不好看。于是在网上找了一下资料,printf还真支持输...
摘要: (1)C语言跟内存分配方式从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很...
摘要: 关键字:std::string Unicode转自:http://www.vckbase.com/document/viewdoc/?id=1293一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单。基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于_UNICODE...
摘要: 关于extern_C通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:[plain]view plaincopyprint?#ifdef__cplusplusextern&C&{#endif/****somedeclarationorso*****/#ifdef__cplusplus}#e...
摘要: 正好是我们代码中遇到的问题,之前不求甚解,只用g++编译没有错误就不管了,现在要跨平台到windows下就遇到了问题。全文转载自:http://user.qzone.qq.com//blog/gcc和g++的区别1、gcc在编译阶段,把后缀为.c的源文件按照c语法...
摘要: 提示:(1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!!示例:1、不带转义字符的字符串 如:“abc!x=/”,strlen求其长度为 7,但是因为字符串在末尾还有一个终止符‘\0’,因此字符串占8个字节,长...
摘要: C语言的左位移能不能超过8位?比如b=a&&20; 这样可以不?如果可以,一个字节只有8个位,左移20位是不是连右边其它字节的12个位(20-8)也一起左移?字符变量左移八次后,所有的位都移出去了,继续左移当然可以,但没有意义,因为左移八次后八个位都是0,再移没有意义追答:他左边的字节不受影响追问:...
摘要: [cpp]view plaincopy#defineFAMILY_NAME&曾&printf(FAMILY_NAME&Jack&);最近看到有类似这样的c++代码,当时一看,我靠,还有这样写的啊!什么情况!这样也能行!我当时还不信,认为一定会报语法错误,于是测试下,还真可以。起初还以为是,函数传递参...
摘要: __VA_ARGS__ 是一个可变参数的宏(gcc支持)。实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。这样预定义宏_ _VA_ARGS_ _就可以被用在替换部分中,替换省略号所代表的字符串。加##用来支持0个可变参数的情况。测试代码:#include#define PRINT...
摘要: 1.Preprocessor Glue: The ## Operator预处理连接符:##操作符Like the # operator, the ## operator can be used in the replacement section of a function-like macro.A...
摘要: 宏里面使用:一、# 转为字符串#define PSQR(x) printf(&the square of& #x &is %d.\n&,(x)*(x)) 如果使用PSQR(&test2”),则编译出错;而使用PSQR(test2),则ok;#define TEST2(p) (cout&&#p&...
摘要: 自己想了解下关于system v,在网上看到一篇详细的说明,与大家分享一下,原文地址http://hi.baidu.com/tekuba/item/542e5c178918以前对glibc,POSIX等的关系一直很迷惑。这是今天在网上找到的说明glibc,POSIX,syst...
摘要: define,无参宏定义的一般形式为:#define标识符字符串外文名define词条范围计算机专业用语无参一般形式#define标识符字符串带参一般形式#define 宏名(形参表) 字符串目录1参数2作用3宏定义优点4无参宏定义5带参宏定义6PHP用法7例子?例子 1?例子 21参数编辑#def...
摘要: linux下用C开发多线程程序,Linux系统下的多线程遵循POSIX线程接口,称为pthread。#include int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restri...
摘要: goto语句可以用于同一个函数内异常处理,不幸的是,goto是本地的,它只能跳到所在函数内部的标号上。为了解决这个限制,C函数库提供了setjmp()和longjmp()函数,它们分别承担非局部标号和goto作用。头文件申明了这些函数及同时所需的jmp_buf数据类型。 1.setjmp(jbuf)...
摘要: 没啥技术含量,只不过是在没事干,就把这个也记上,Windows下好像有这个api函数,但是在wince下用不了,所以还得自己封装一个。大体代码如下:1424...
摘要: #incluboolIsRound(intyear){if((year%100)&&(year%4==0)) return1;if((year%100==0)&&(year%400==0)) return1;return0;}intmain() {...
摘要: 确定是CPU过高使用top观察是否存在CPU使用率过高现象找出线程对CPU使用率过高的进程的所有线程进行排序ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |grep xxx得到如下结果,其中线程2909使用了7.8%的CPU. .0 ./xxx...
摘要: 引言生產者消費者是一個經典的模式利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度便於對生產者和消費者的修改下面記錄的是一個經典的單一生產者多消費者的模式設計思路以隊列做為緩衝區,實現產品的FIFO生產者調用緩衝區的push函數,將產品加入緩衝區消費者調用緩衝區的pop函數,將產品從緩衝區...
摘要: 为避免以下某个软件安装时不自动安装 build-essential 不妨先执行:sudo apt-get install build-essential[编辑]anjutaAnjuta DevStudio 的官方地址:http://anjuta.sourceforge.net/Anjuta是一个C/...
摘要: TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况. 在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时...
摘要: 摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表,由fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、...
摘要: 很棒的 C/C++ 框架,类库,资源集合。Awesome C/C++Standard LibrariesFrameworksArtificial IntelligenceAsynchronous Event LoopAudioBiologyCompressionConcurrencyContaine...
摘要: SmartWin++遵循BSD许可协议的C++ GUI库,建立在Windows API之上,但仍可以通过使用WineLib在Linux/xNix上使用。也支持Pocket PC和基于Windows CE的应用程序...XCLASSXCLASS库是X Windows环境中的一个C++ GUI工具包的。...
摘要: 上次介绍的几款图形界面库http://blog.okbase.net/vchelp/archive/23.html都是国外的开源项目,今天介绍的几款都是国人的开源项目,大部分是采用DirectUI设计思想。1.炫彩界面库XCGUI炫彩界面库不仅是界面库,它是软件界面开发框架,让用户开发桌面软件变的简...
摘要: 网上有篇文章《开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山》,看了之后觉得每个库都不错,这里我具体下载这些库看一下,简单总结一下;顺便添加一些我找到的网络库;(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.c...
摘要: 最近在做视频的开发,其中视频的设备接入管理服务器、流媒体管理服务器、中心服务器都涉及到了数据库的操作,同时需要兼容大多数版本的数据库,包括mysql、sqlite、oracle。公司原来使用的是ado来进行数据库的开发的, 但是考虑到目前需要兼容linux,目前使用Poco框架封装的数据库模块进行开...
摘要: VS 2005使用map文件查找程序崩溃原因一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的方法来找原因,通过生成map文件,由于2005取消map文件生成行号信息(vc6.0下是可以生成行号信...
摘要: 1案例描述作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭。请与您的供应商联系。呵呵,这句微软的“名言”,恐怕是程序员最怕见也最常见的东西了。在一个大型软件的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试...
摘要: #include #include int main() { std:: ss & // output it as a signed type std::cout (x) && std::end...
摘要: int BetterVenca25(char* hex){ int res=0; for(;*hex++) { int d=toupper(*hex); if(d &='0' && d ='A' && d &='F')d-='A'-10; else return -1; res=res*16...
摘要: int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。string前后加上双引号,告...
摘要: 将16进制字符串值转换为 int 整型值此例中用 &1de& 作为测试字符串,实现代码如下:[cpp]view plaincopy#include#include#include#include/**将字符转换为数值**/intc2i(charch){//如果是数字,则用数字的ASCII码减去48,...
摘要: 在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如:char *ptr=&0x11&;int n=0;//我们想让n等于0x11,即17通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:char*ptr=&123&;intn=0;n=atoi(ptr);printf...
摘要: 近期在补充和梳理C++方面的知识的时候,遇到了WeakPtr这个概念和用法,不甚明白,Google出了一堆文字,包括Boost的shared_ptr和weak_ptr的比较,以及其他一些博客里面给的例子以及解释。其中有一个是这样解释的,原文大意:在C++的weak_ptr里面,有两类指针,一类是拥有...
摘要: 智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢?指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能...
摘要: 前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元...
摘要: 我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的au...
摘要: 内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术。内存池分类:1、不定长内存池。典型的实现有apr_pool、obstack。优点是不需要为不同的数据类型创建不同的内存池,缺点是造...
摘要: 内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术。内存池分类:1、不定长内存池。典型的实现有apr_pool、obstack。优点是不需要为不同的数据类型创建不同的内存池,缺点是造...
摘要: 熟悉C++98的朋友,应该都知道,在C++98中没有thread, mutex, condition_variable这些与concurrency相关的特性支持,如果需要写多线程相关程序,都要借助于不同平台上各自提供的api,这样带来的问题就是程序的跨平台移植性比较差,经常要用一大堆的#ifdef ...
摘要: C++函数模版与类模版。template void SwapFunction(T &first, T &second){}//函数模版template //类模版class CTemplate{public: void SWap(T &first, T &second){ }};#include...
摘要: 单例模式(Singleton Pattern)是设计模式中的一种,它用来保证系统中最多只能存在一个它的实例,其做法是由类自身来创建和持有它的对象实例,把对实例的创建权和管理权都控制在自己手中,以便控制实例数目。关于如何在C++中实现单例模式的讨论已经太多了,我只是简单介绍一下可以继承的单例类。首先介...
摘要: C++11支持range-based for循环。这是一个很方便的特性,能省挺多代码。以下代码就能很方便的遍历vector中的元素,并打印出来:std::vector int_int_vec.push_back(1);int_vec.push_back(2);//如果要修改i...
摘要: Q: 那个auto_ptr是什么东东啊?为什么没有auto_array?A: 哦,auto_ptr是一个很简单的资源封装类,是在头文件中定义的。它使用“资源分配即初始化”技术来保证资源在发生异常时也能被安全释放(“exception safety”)。一个auto_ptr封装了一个指针,也可以被当作...
摘要: 条款1:不要把一个原生指针给多个shared_ptr管理int* ptr =shared_ptr p1(ptr);shared_ptr p2(ptr); //logic errorptr对象被删除了2次这种问题比喻成“二龙治水”,在原生指针中也同样可能发生。条款2:不要把this指...
摘要: thread_group是boost库中的线程池类,内部使用的是boost::thread。随着C++ 11标准的制定和各大编译器的新版本的推出(其实主要是VS2012的推出啦……),本着能用标准库就用标准库的指导原则,决定把项目中多线程相关的部分代码从boost::thread迁移到std::th...
摘要: 下面是一个生产者消费者问题,来介绍condition_variable的用法。当线程间的共享数据发生变化的时候,可以通过condition_variable来通知其他的线程。消费者wait 直到生产者通知其状态发生改变,Condition_variable是使用方法如下:·当持有锁之后,线程调用wa...
摘要: C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件、、、等用于支持多线程。使用C++11开启一个线程是比较简单...
摘要: C++11多线程教学II从我最近发布的C++11线程教学文章里,我们已经知道C++11线程写法与POSIX的pthreads写法相比,更为简洁。只需很少几个简单概念,我们就能搭建相当复杂的处理图片程序,但是我们回避了线程同步的议题。在接下来的部分,我们将进入C++11多线程编程的同步领域,看看如何来...
摘要: 本篇教学代码可在GitHub获得:https://github.com/sol-prog/threads。在之前的教学中,我展示了一些最新进的C++11语言内容:1.正则表达式(http://solarianprogrammer.com//cpp-11-regex-tutoria...
摘要: 问题背景[cpp]view plaincopy#inclvectordoubleValues(constvector&v){vectornew_values(v.size());for(autoitr=new_values.begin(),end_itr=n...
摘要: 声明:本文是在Alex Allain的文章http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-function.html的基础上写成的。加入了很多个人的理解,不是翻译。转载请注明出处 http://blog...
摘要: 声明:本文参考了Alex Allain的文章http://www.cprogramming.com/c++11/c++11-lambda-closures.html加入了自己的理解,不是简单的翻译C++11终于知道要在语言中加入匿名函数了。匿名函数在很多时候可以为编码提供便利,这在下文会提到。很多语...
摘要: 引用计数是对共享的动态内存的一种管理方法,STL库的string就是用到了引用计数的方法。本文简单描述引用计数的原理,重点以一个实例来说明怎么在程序中实现引用计数。1. 概念引用计数用来记录当前有多少指针指向同一块动态分配的内存。当有指针指向这块内存时,计数器加1;当指向此内存的指针销毁时,计数器减...
摘要: 智能指针(auto_ptr)这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限。本文总结的8个问题足以涵盖auto_ptr的大部分内容。1. auto_ptr是什么?auto_ptr 是C++标准库提供...
摘要: 参考来源:http://blog.csdn.net/flying8127/article/details/1598521在原来原基础上,将代码整理,并加强安全性. 并按照WindowsAPI设计, 添加输出缓冲长度探测功能当OutUTFString为NULL时, 可以进行输出的UTF8字符串长度探测...
摘要: windows开发环境下用VC++6.0对unicode 、utf-8、 gb2312 三种编码格式之间的转换方法:[cpp]view plaincopy#include#include#inclvoidunicodeToUTF8(constwstring&...
摘要: staticstd::wstringMBytesToWString(constchar*lpcszString);staticstd::stringWStringToMBytes(constwchar_t*lpwcszWString);staticstd::wstringUTF8ToWStrin...
摘要: ATL宏:USES_CONVERSION;W2AA2WCString StringUtil::UTF8_to_UNICODE(const char *utf8_string, int length){int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, ...
摘要: 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计...
摘要: 更新至英文版October 3, 2012译者前言:经过C++标准委员会的不懈努力,最新的ISO C++标准C++11,也即是原来的C++0x,已经正式发布了。让我们欢迎C++11!今天获得Stroustrup先生的许可,开始翻译由他撰写和维护的C++11 FAQ。我觉得这是一件伟大而光荣的事情,但...
摘要: 问题来源:由于面试题中,考官出了一道简单的程序输出结果值的题:如下,[cpp]view plaincopyprint?classA{private:intn1;intn2;public:A():n2(0),n1(n2+2){}voidPrint(){cout&&&n1:&&&n1&&&,n2:&&&...
摘要: 引言:在进行网络通信时是否需要进行字节序转换?相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换。原因如下:网络协议规定接收到得第一个字节是高字节,存放到低地址,所以发送时会首先去低地址取数据的高字节。小端模式的多字节数据在存放时,低地址存放的是低字...
摘要: 最近在项目开发过程中,需要在采用JAVA作为语言的服务器与采用C++作为语言的服务器间进行通信,这就涉及到这两种语言间数据类型的转换以及网络字节序与主机字节序的区别。该文主要说说网络字节序和主机字节序的区别以及Little endian与Big endian的概念。其实编程的事就比较简单了 我也懒得...
摘要: 如果嵌套类型和其外部类型之间的关系需要成员可访问性语义,需要使用C++嵌套类,嵌套类型不应针对其声明类型以外的类型执行任务,而C++局部类允许类、结构和接口被分成多个小块儿并存储在不同的源文件中,这样的实现很容易开发和维护。C++局部类:在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作用...
摘要: C++嵌套类1、嵌套类的名字只在外围类可见。2、类的私有成员只有类的成员和友元可以访问,因此外围类不可以访问嵌套类的私有成员。嵌套类可以访问外围类的成员(通过对象、指针或者引用)。3、一个好的嵌套类设计:嵌套类应该设成私有。嵌套类的成员和方法可以设为public。4、嵌套类可以直接访问外围类的静态成...
摘要: 一、嵌套类在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不...
摘要: (1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html(2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http:...
摘要: 在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可经典的C++库 STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合 标准比较远的情况下 那时还是有用的,当然目前vc71已经比较接近标准了...
摘要: 动态链接库中分配内存引起的本文主要是探讨关于在动态链接库分配的内存在主程序中释放所产生的问题,该问题是我在刚做的PJP工程中所遇到的,由于刚碰到之时感动比较诡异(这也是学识不够所致),所以将它写下来,大家一起分享.问题来由:由于该工程中要用到声音,所以我的分工之一就是用DirectMusic和Dir...
摘要: 来源:http://blog.csdn.net/lezhiyong 应用背景:线程1将每次数量不一的音频采样点(PCM音频数据)写入环形缓冲区,线程2每次取固定数量采样点送音频编码器,线程1线程2在平均时间内的读写数据量相等。(倒入桶中的水量有时大有时小,但每次取一瓢喝:) 该环形缓冲区借鉴Coo...
摘要: 说道定时器,很多人都会想到Windows定时器SetTimer吧!其实,项目里面原本确实是使用这种方法实现动画效果的,但是后来问题出现了!由于WM_TIMER消息优先级比较低,常常被丢失,导致一个WM_MOUSEMOVE消息都会影响整个动画的效果。 这时我就考虑,是否能给定时器创建一个单独的线程,接...
摘要: QueryPerformanceFrequency() - 基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不...
摘要: BOOLEAN MmIsAddressValid( _In_PVOID VirtualAddress);ParametersVirtualAddress[in]A pointer to the nonpaged virtual address to check. The caller must e...
摘要: 1. 存分配的三个方法:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中...
摘要: 从微软站点:检查指针有效性下面的示例使用 _CrtIsValidPointer 验证给定的内存范围对于读或写是否有效。_ASSERTE(_CrtIsValidPointer( address, size, TRUE );下面的示例使用 _CrtIsValidHeapPointer 验证指针指向本地堆...
摘要: 最近在写网络上的东西,程序经过长时间的运行,会出现崩溃的问题,经过DUMP文件的查看,发现在recv的地方接收返回值的时候,数据的长度异常的大差不多16亿多字节.而查看分配后的char指针显示为错误的指针,这可能是接收数据不对应产生的问题解决思路如下: 1.对返回值长度进行判断,如果超过项目内最大...
摘要: 遇到一未找到必然出现条件的崩溃,不知道什么时候能触发崩溃,崩溃dump显示,试图访问了非法的内存或者写入了非法的内存此时如下两个函数就比较有用了:[cpp]view plaincopyBOOLWINAPIIsBadReadPtr(__inconstVOID*lp,__inUINT_PTRucb);B...
摘要: 判断调用进程是否拥有对指定字符串指针的读取权限,函数原型如下:BOOL IsBadStringPtr( LPCTSTR lpsz, UINT_PTR ucchMax);参数:lpsz: 输入参数,指向字符串。ucchMax:输入参数,读取字符串的最大长度。返回值:返回BOOL值,表示当前进程是否拥有...
摘要: 什么是lib文件,lib和dll的关系如何 ( 19:44:37)(1)lib是编译时需要的,dll是运行时需要的。如果要完成源代码的编译,有lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。(2)一般的动态库程序有lib文件和dll文...
摘要: 知识这个东西,真是知道的越多就不知道的越多,C/C++这塘水得多深啊,哈哈。看下面3个片段:1void fun(char a[100]) {2fprintf(stderr, &%s\n&, a);3}45int main(void) {6char aa[200] = &abcdef&;7fun(aa...
摘要: C++: 单例模式和缺陷实现一个单例模式1class Singleton {2private:3Singleton() { cout show(); 26return 0;27}编译执行上面的代码,输出如下:Singleton::constructorSingleton::show我们发现上面的输出...
摘要: 看一个小例子:1#include 2345class A {6public:7A() { cout 2345class A {6public:7A() { cout && &A::A()& && }8~A()...
摘要: 眼见为实(1):C++基本概念在编译器中的实现对于C++对象模型,相信很多程序员都耳熟能详。 本文试图通过一个简单的例子演示一些C++基本概念在编译器中的实现,以期达到眼见为实的效果。本文的演示程序(http://www.fmddlmyy.cn/cpptest.zip)可以从我的个人主页下载。程序包...
摘要: DLL搜索路径和DLL劫持环境:XP SP3 VS2005作者:magictong 为什么要把DLL搜索路径(DLL ORDER)和DLL劫持(DLL Hajack)拿到一起讲呢?呵呵,其实没啥深意,仅仅是二者有因果关系而已。可以讲正是因为Windows系统下面DLL的搜索路径存在的漏洞才有了后来的...
摘要: 1、 DLL的概念可以向程序提供一些函数、变量或类。静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。(2...
摘要: CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子...
摘要: 参考链接:http://wenku.baidu.com/view/68fc340cda714b.html
摘要: 最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记一、修改预编译头文件(stdafx.h)在stdafx.h文件中添加下面代码,包含一些MFC的头文件,这些可...
摘要: C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。 reinterpreter_cast,仅仅重新解释类型,但没有进行二进制的转换。 4种类型转换的格式,如: TYPE B = static_cast(TYPE)(a) cons...
摘要: 自己平时收集的一些技巧与心得,这里分享出来,普及一下知识。 1.如何在Release状态下进行调试 Project-&Setting=&ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Program Database。在Link标签中选中Generate debug info复选框。 注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下Qui
摘要: 一、C++成员变量初始化1、普通的变量:一般不考虑啥效率的情况下可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行2、static静态变量(本地化数据和代码范围):static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。在这种性质上理解,有点类似于全局变量的唯一性。函数体内static变量的作用范围时该函数体,不同于auto变量,该变量内存只被分配一次,因此其值在下次调用时维持上次的值。在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外的其它函数访问。在模块内的static函数只可被这一模块内的其他函数调用,这个
摘要: 一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐
摘要: 深入理解计算机各种类型大小(sizeof)Cpp代码//Exampleofthesizeofkeywordsize_ti=sizeof(int); structalign_depends{ }; size_tsize=sizeof(align_depends);//Thevalueofsizedependson//thevaluesetwith/Zpor//#pragmapackintarray[]={1,2,3,4,5};//sizeof(array)is20//sizeof(array[0])is4size_tsizearr=//Countofitemsinarr
摘要: 特色 迅捷是一个功能强大的C/C++源代码分析软件。可以处理数百万行的源程序代码。支持标准及K&R风格的C/C++。对每一个打开的源代码工程,通过建立一个包含丰富交叉引用关系的数据库,显示其所含的各种信息:所有的源文件、所有的头文件、所有的代码文件、词汇索引、索引结果、文件包含关系、宏定义、数据结构和函数定义、可扩展的函数定义、函数调用关系、分文件夹的定义目录、构造层次、诊断性输出等。仅须按一键就可以非常方便地扩展各种类型的定义和调用关系。所有这些结合起来帮助用户快速地阅读、理解、研究和维护关键或大型代码库。 包含各种友好的用户界面效果,如对窗口的标签化排列、任意分隔、自动隐藏、浮动、
摘要: 绘制函数调用关系图对理解大型程序大有帮助。我想大家都有过一边读源码(并在头脑中维护一个调用栈),一边在纸上画函数调用关系,然后整理成图的经历。如果运气好一点,借助调试器的单步跟踪功能和call stack窗口,能节约一些脑力。不过如果要分析的是脚本语言的代码,那多半只好老老实实用第一种方法了。如果在读代码之前,手边就有一份调用图,岂不妙哉?下面举出我知道的几种免费的分析C/C++函数调用关系的工具。函数调用关系图(call graph)是图(graph),而且是有向图,多半还是无环图(无圈图)——如果代码中没有直接或间接的递归的话。Graphviz是专门绘制有向图和无向图的工具,所以很多cal
摘要: CodeViz是《Understanding The Linux Virtual Memory Manager》(at Amazon,下载地址在页尾)的作者Mel Gorman写的一款分析C/C++源代码中函数调用关系的open source工具(类似的open source软件有egypt、ncc)。其基本原理是给 GCC 打个补丁,让它在编译时每个源文件时 dump 出其中函数的 call graph,然后用 Perl 脚本收集并整理调用关系,转交给Graphviz绘制图形。CodeViz 原本是作者用来分析 Linux virtual memory 的源码时写的一个小工具,现在已经基本支
摘要: 1文档类 (1)Doxygen 参考站点:http://www.doxygen.org Doxygen是一种适合C风格语言(如C++、C、IDL、Java甚至包括C#和PHP)的、开放源码的、基于命令行的文档产生器。 (2)C++2HTML 参考站点:http://www.bedaux.net/cpp2html/ 把C++代码变成语法高亮的HTML (3)CodeColorizer 参考站点:http://www.chami.com/colorizer/ 它能把好几种语言的源代码着色为HTML (4)Doc-O-Matic 参考站点:http://www.doc-o-ma...
摘要: Windows:使用CoCreateGuid函数(GUID)[cpp]view plaincopyprint?#include#include#defineGUID_LEN64intmain(intargc,char*argv[]){charbuffer[GUID_LEN]={0};GUIDif(CoCreateGuid(&guid)){fprintf(stderr,&createguiderror\n&);return-1;}_snprintf(buffer,sizeof(buffer),&%08X-%04X-%04x-%02X%02X-%02
摘要: 用一个实际代码来说明。class A {public: staticvoid staticmember(){cout&&&static&&&} //static member void nonstatic(){cout&&&nonstatic&&&} //nonstatic member virtualvoid virtualmember(){cout&&&virtual&&&};//virtual member};int main(
摘要: Q: 如何打开一个应用程序?ShellExecute(this-&m_hWnd,&open&,&calc.exe&,&&,&&, SW_SHOW );或ShellExecute(this-&m_hWnd,&open&,&notepad.exe&, &c:\\MyLog.log&,&&,SW_SHOW );正如您所看到的,我并没有传递程序的完整路径。Q: 如何打开一个同系统程序相关连的文档?ShellExecute(this-
摘要: STL有字符串处理类——stirng和wstring,但是用的时候会觉得不是很方便,因为它不能像TCHAR一样根据定义的宏在char类型字符串和wchar_t进行转换,总不能因为程序要Unicode就把所有类型转换一遍吧?有没有好办法?答案当然是肯定的,先看看MS的TCHAR是怎么做的,以下摘自MS Platform 的tchar.h,略有删减#ifdef _UNICODE#ifdef __cplusplus} /* ... extern &C& */#endif/* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */#
摘要: 本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下-复制代码 代码如下: #ifndef USE_H_ #define USE_H_ #include #include #include class CUser { public: CUser(); virtual~ CUser(); char* WcharToChar(const wchar_t* wp); char* StringToChar(const string& s); cha...
摘要: 本文为验证后的结果,准确性较高,适合任何人阅读静态库和动态库链接分析1、文件组成结构静态库:lib 头文件动态库:lib dll 头文件从组成上看,动态库和静态库的差异在于动态库多了一份dll文件,导致动态库可以独立存在,2、链接方式静态库:只能静态链接动态库:动态链接和静态链接3、运行效果静态库:相当于直接把代码段写入到exe或dll文件中动态库:相当于与exe或dll形成了一种关系,exe或dll可以到动态库中去查找所需要的函数4、差别:静态库:不需要导出就可以被链接使用动态库:需要导出后方可使用(动态链接)5、编译静态库:编译后只有lib文件动态库:若没有导出函数刚只能编译出dll文..
摘要: 1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。静态链接库与静态链接库调用规则总体比较如下。对于静态链接库(比较简单): 首先,静态链接库的使用需要库的开发者提供生成库的.h头
摘要: 大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).首先我们来看一下linker的 /subsystem 选项该选项的语法形式如下:/SUBSYSTEM:{CONSOLE|EFI_AP
摘要: 在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!一. message 参数。message它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:#pragma message(“消息文本”)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86
摘要: 这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在C#中遇到该问题,让我费了很大的周折,才在msdn查到。一、16进制字符串转数字 1、C/C++ I、最简单的办法:sscanf(“12AB”,,”%x”,&lngHex); //字符也可以为”0x12AB” II、有个朋友,自行编写函数实现了该功能,据说速度比sscanf快: BOOL HexToDec( LPCTSTR shex,int& idec ) { int i, int len = lstrlen( shex ); if( len&8...
摘要: for(;iter!=mapStudent.end();){ if((iter-&second)&=aa) { //满足删除条件,删除当前结点,并指向下面一个结点 mapStudent.erase(iter++); } else { //条件不满足,指向下面一个结点 iter++; }}这种删除方式也是STL源码一书中推荐的方式,分析 mapStudent.erase(iter++)语句,map中在删除iter的时候,先将iter做缓存,然后执行iter++使之指向下一个结点,再进入erase函数体中执行删除操作,删除时使用的iter就是缓存下来的iter(也就是当前iter(做了
摘要: memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count);他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。第一种情况下,拷贝重叠的区域不会出现问题,内容均可以正确的被拷贝。第二种情况下,问题出现在右边的两个字节,这两个字节
摘要: 正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情。在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行。然后,事情确实你发现创建多线程根本没有让程序快多少,也没有提高多少cpu利用率,甚至可能让cpu利用率下降。唯一能够确定的是多线程能够避免界面假死。为什么会是这样的了。本文将举一些例子和讲述一些原因。首先,我来讲一下多处理的一些知识。如下图所示,多处理器系统也只有一个待运行的线程队列,内存中也只有一个操作系统拷贝,而且也只有一个内存系统,但是会有多个cpu同时运行不同的线程。一个cpu运行一个线程,那么上图中
摘要: VS2005调试技巧集合http://blog.csdn.net/rainylin/archive//1775125.aspx下面有从浅入深的6个问题,您可以尝试回答一下一个如下的语句for (int i = 0; i 0且f(x2)0,则函数的根就在区间x3和x2之间,如果f(x3)0;如果你把main函数里所有的操作都注释掉,那么 程序什么都不做,就不可能有bug,那就好比是f(x2)不可省略): &Debug.Print a + bMSDN参考:ms-help://MS.MSDNQTR.v90.en/dv_vscmds/html/9-47
摘要: 关于C++中的构造函数,拷贝构造函数和赋值运算,以前看过一篇《高质量C++/C编程指南》的文章中介绍的很清楚,网上能搜索到,如果想详细了解这方面的知识可以参看一下这篇文章。常见的给对象赋值方式有构造函数,拷贝构造函数,赋值运算符这三种方法,如下代码演示了这几种常见的方法。Aa1;Aa2(a1);Aa3 = a1;a3 = a2;如果不手动写代码,C++编译器默认提供了构造函数,拷贝构造函数,赋值运算符的这三种方法的默认实现。默认构造函数没有参数,它什么也不做,程序员如果要实现手动构造的话则需要编写相应的重载版本。前面代码的第一行就是通过默认构造函数来创建一个对象,一般也不会和其它几种构造方式混
摘要: 1、 DLL的概念DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。(2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。动态链接库的分类:Visual C++支持三种DLL,它们分别是:(1)Non-MFC DLL(非MF
摘要: 源代码下载:http://download.csdn.net/detail/nuptboyzhb/.统计文本中汉字的频数,为后续的文本分类做基础。对于汉字的统计,需要判断读取的是否为汉字。源代码如下:[C++ code][cpp]view plaincopy /**@author:郑海波http://blog.csdn.net/NUPTboyZHB*参考:实验室小熊*注:有删改*/#pragmawarning(disable:4786)#include#include#include#include#include#include#includeusingnamespacest
摘要: 点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429c++调用matlab生成的Dll动态连接库实验平台: matlab 7.0(R2009a) VC++6.0思路:1. 设置matlab的编译器,使用外部的VC或者gcc等编译器。2. 编译m文件成dll3. 设置VC的Include路径和lib链接库的路径4. 编写C++调用dll步骤:1. 设置matlab的编译器在命令行窗口下,输入并执行如下命令:mex –setup在出现的编译器中,选择VC++6.0然后在输入命令:mbuild –setup 同样选择VC++6.02. 编写
摘要: 有程序EXE和DLL,其中DLL中有1个函数用来显示对话框,被EXE调用。当EXE和DLL都为Release或Debug时,没有任何问题,但EXE为Release、DLL为Debug时,就会出错。该DLL是用VC提供的MFC Extension DLL,函数的代码如下:HINSTANCE hInstOld = AfxGetResourceHandle(); // 该句出错HINSTANCE hInstNew = GetModuleHandle(&T01Test.dll&);AfxSetResourceHandle(hInstNew);CHahaDdlg.DoM
摘要: 现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32DLL和MFCDLL两个方面来分析并解决这个问题。1.Win32DLL在Win3

我要回帖

更多关于 键盘alt键失灵修复 的文章

 

随机推荐