- 博客(50)
- 资源 (2)
- 收藏
- 关注
原创 原子操作及对C++编程的意义
介绍所谓原子操作,就是“不可中断的一个或一系列操作”。在C/C++标准中,一个变量除了使用atomic相关的函数和编译器自带的一些扩展函数(interlocked系列函数)以外, 不保证所有的操作是原子操作,这个取决于运行程序的CPU。在单核心处理器系统中,能够在一条机器指令中完成的操作都可以认为是原子操作,因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and
2015-11-06 18:55:01
2051
原创 MFC CObject简析
//VS2008代码如下class AFX_NOVTABLE CObject{public:// Object model (types, destruction, allocation) virtual CRuntimeClass* GetRuntimeClass() const; virtual ~CObject() = 0; // virtual destructors a
2015-10-29 17:28:34
599
原创 linux源码中关于内存移动或复制的函数详细解说: memmove, memcpy, strcpy
本文讨论的是关于内存复制中内存重叠和不重叠的情况:memmove/*** memmove - Copy one area of memory to another* @dest: Where to copy to* @src: Where to copy from* @count: The size of the area.** Unlike memcpy(), mem
2015-04-19 11:33:59
2270
原创 C++ 中wchar_t范围来判断其是否是中文,数字还是其他
下面是各语言在Unicode中的范围:0000:Basic Latin 基本拉丁语0080:Latin-1 Supplement 拉丁语-1补遗0100:Latin Extended-A 拉丁语扩充-A0180:Latin Extended-B 拉丁语扩充-B0250:IPA Extensions 国际音标02B0:Spacing Modifier Letter
2015-03-11 11:20:28
3846
转载 从字体文件中获取字体名字
IntroductionEveryone can get a font name of one of installed fonts. But what if the font is still not installed in the system and you want to know what is that, programmatically? Of course you can
2015-01-05 10:38:15
2141
转载 GUID生成
windows下使用微软guidgen.exe//--生成GUID的代码//--相关程序/微软guidgen.exe#include "stdafx.h"#include #include //--生成GUIDconst char* newGUID(){ static char buf[64] = {0}; GUID guid; if (S_OK == ::CoCrea
2014-12-29 13:54:16
540
转载 strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l
将一个字符串的字符复制给另一个。strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l 的这些版本如 CRT 中的安全功能 所述,其安全得到了增强。 重要事项_mbsncpy_s 和 _mbsncpy_s_l 不能在 Windows 运行时中执行的应用程序中使用。 有关详细信息,请参见 CR
2014-12-12 17:43:29
3595
转载 C++ 异常
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这
2014-12-08 14:29:39
669
原创 timer.hpp
class timer{ public: timer() { _start_time = std::clock(); } // postcondition: elapsed()==0// timer( const timer& src ); // post: elapsed()==src.elapsed()// ~time
2014-09-02 14:22:34
335
转载 mkdir函数-linux
mkdir函数头文件库:#include #include 函数原型:int mkdir(const char *pathname, mode_t mode);函数说明:mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。返回值:若目录创建成功,则返回0;否则返回-1,并将错
2014-06-26 15:55:35
3997
转载 Linux下eclipse修改Makefile参数的方法
我再Linux下使用eclipse时,Makefiel文件可以由eclipse自动生成,可以通过修改它的工程配置来改变Makefile的参数 如:在使用线程操作时,需要添加-lpthread才能编译通过,修改方法如下:1、打开eclipse工程文件属性: 选择C/C++ Build-->GCC C Link-->Miscellaneous:
2014-06-24 14:22:57
4498
转载 gcc中-pthread和-lpthread的区别
用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样:Shell代码 gcc -c x.c gcc x.o -ox -lpthread 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样:
2014-06-24 14:17:09
615
转载 Makefile经典教程(掌握这些足够)
makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写make
2014-06-24 09:00:17
3050
转载 Eclipse开发C/C++之使用技巧小结
我需要在Linux下开发C++项目,没有VS,用Vim开发是不错,但项目大了,效率就跟不上IDE了,所以选了Eclipse+CDT插件。当然,Vimers觉得我说的不对的请勿喷哈,我也是水手一个。Eclipse是个很不错的集成开发环境,安装CDT插件后即可开发C/C++项目。我的默认安装了CDT,没有装的网上一搜一大堆。这里不再赘述,直入主题吧。内容概要
2014-06-23 13:28:55
584
原创 设计模式之创建型:抽象工厂和生成器的混合使用
#pragma once#include #include namespace MazeSite{//====================================================================================================================/// /// 方向, 依次是: 北,
2014-06-12 11:37:57
340
转载 C#与C/C++的交互
最近在编写Warensoft3D游戏引擎,并预计明年年初发布测试版本,底层引擎使用DirectX和MONO来编写,上层的逻辑使用C#来编写,因此编写了大量C#与C++互调的代码,现在经验写出来与大家分享,并希望后来者少走弯路。C#与C++交互,总体来说可以有两种方法:利用C++/CLI作为代理中间层利用PInvoke实现直接调用第一种方法:实现起来比较简单直
2014-06-05 10:35:12
723
转载 提高编程能力的7条建议
编程是非常酷的一件事情,但是在酷炫的背后它对很多人来说还是挺难的。很多人在学习编程之初就被困难击败了。 当你不熟悉编程的时候,你可能会觉得无从下手,并且不知道如何运用学到的知识。只要你通过了这一困难的学习阶段,你就会发现一个全新的世界。 以下是一些能够帮助你快速提高编程技巧的建议。 1. 多写代码 学习某件事情最好的办法就是练习。你应该花大量时间
2014-05-29 13:31:40
582
转载 C++11 中的线程、锁和条件变量
线程类std::thread代表一个可执行线程,使用时必须包含头文件。std::thread可以和普通函数,匿名函数和仿函数(一个实现了operator()函数的类)一同使用。另外,它允许向线程函数传递任意数量的参数。1234567891011121314
2014-05-26 10:40:38
814
转载 最丑陋的C语言特性:tgmath.h
是一个在C99引入的,标准C语言库提供的头文件。对于Fortran编写的数值软件,它向C语言提供更加简洁的接口。跟C语言不同,Fortran提供了编写在该语言内部的“固有函数”,其表现得更像操作符一样。固有函数接受不同类型的参数,并根据参数的类型返回对应类型的返回值。同时,Fortran中的普通函数(“外部函数”)的行为跟C语言中的函数类似,对类型要求严格(即函数参数的类型必须符合,返回值
2014-05-26 10:37:24
808
转载 C\C++代码优化的27个建议
本文由 伯乐在线 - 周昌鸿 翻译自 cs.clemson.edu。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。1. 记住阿姆达尔定律:funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数。所以,如果你优化了函数TriangleIntersect执行40%的运行时间,使它运行快了近两倍,而你的程序会运行快25%。这意味着不经
2014-05-26 10:24:42
685
转载 Unix/Linux编程日期时间汇编
Unix/Linux 时间类型Unix/Linux下有以下几种时间结构:1、time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒;由函数time()获取; 该类型定义在头文件 /usr/include/sys/time.h 中: #define _TIME_T typedef long ti
2014-05-22 20:15:40
521
转载 c++钻石-菱形继承
在C++中,什么叫做钻石问题(也可以叫菱形继承问题),怎么避免它?下面的图表可以用来解释钻石问题。假设我们有类B和类C,它们都继承了相同的类A。另外我们还有类D,类D通过多重继承机制继承了类B和类C。因为上述图表的形状类似于钻石(或者菱形),因此这个问题被形象地称为钻石问题(菱形继承问题)。现在,我们将上面的图
2014-05-22 20:11:10
955
转载 DllMain和多线程死锁
感谢源作者:http://blog.youkuaiyun.com/guke1978_123/article/details/625773
2014-05-22 20:07:20
1233
转载 A Fractal Model of the Lifecycle of Reusable Objects
A Fractal Model of the Lifecycle of Reusable Objects
2014-05-21 14:06:05
746
原创 GDI将CDC中的位图保持bmp格式文件,解决GetDIBits调用出错的情况
/// /// 保存图像/// /// 路径/// 图片/// CDCvoid vOrientMap::SaveBmpFile(const char* pPath,CBitmap& bitmap,CDC* pDC){ BITMAP bitm; bitmap.GetBitmap(&bitm); //1.BITMAP文件头部 BITMAPFILEHEADER bfh; bfh
2014-05-20 12:02:29
998
转载 windows下的_mkdir 和 linux下的mkdir
需要注意的是 windows下的_mkdir()只需要一个路径的参数,而linux下的mkdir()需要两个参数,第一个是路径,第二个是权限。以下是linux下的mkdir的讲解:NAMEmkdir - make a directorySYNOPSIS#include sys/stat.h>int mkdir(const char *path, mode_t
2014-05-13 15:55:25
7037
转载 伙伴算法
伙伴算法在内存管理中用来消除外部碎片,用Wolfgang Mauerer(《深入linux内核架构》的作者)的话说“伙伴系统基于一种相对简单然而令人吃惊的强大算法,已经伴随我们几乎40年。它结合了优秀内存分配器的两个关键特征:速度和效率。”那么就来介绍下伙伴算法的实现。首先先来了解下linux内存管理的架构,用于了解伙伴算法所在的位置:这张图的原型来自ULK p303,这张图能较直观的
2014-05-13 13:08:40
1991
ET++ An object-oriented application framework in C++
2014-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人