<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ForYourFace的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ForYourFace</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ForYourFace]]></copyright><item><title><![CDATA[原子操作及对C++编程的意义]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/49685003</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/49685003</guid><author>ForYourFace</author><pubDate>Fri, 06 Nov 2015 18:55:01 +0800</pubDate><description><![CDATA[介绍
所谓原子操作，就是“不可中断的一个或一系列操作”。
在C/C++标准中,一个变量除了使用atomic相关的函数和编译器自带的一些扩展函数（interlocked系列函数）以外,  不保证所有的操作是原子操作，这个取决于运行程序的CPU。
在单核心处理器系统中，能够在一条机器指令中完成的操作都可以认为是原子操作，因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and]]></description><category></category></item><item><title><![CDATA[MFC CObject简析]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/49494291</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/49494291</guid><author>ForYourFace</author><pubDate>Thu, 29 Oct 2015 17:28:34 +0800</pubDate><description><![CDATA[//VS2008代码如下
class AFX_NOVTABLE CObject
{
public:

// Object model (types, destruction, allocation)
	virtual CRuntimeClass* GetRuntimeClass() const;
	virtual ~CObject() = 0;  // virtual destructors a]]></description><category></category></item><item><title><![CDATA[linux源码中关于内存移动或复制的函数详细解说: memmove, memcpy, strcpy]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/45127223</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/45127223</guid><author>ForYourFace</author><pubDate>Sun, 19 Apr 2015 11:33:59 +0800</pubDate><description><![CDATA[本文讨论的是关于内存复制中内存重叠和不重叠的情况:


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]]></description><category></category></item><item><title><![CDATA[C++ 中wchar_t范围来判断其是否是中文，数字还是其他]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/44196329</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/44196329</guid><author>ForYourFace</author><pubDate>Wed, 11 Mar 2015 11:20:28 +0800</pubDate><description><![CDATA[﻿﻿
下面是各语言在Unicode中的范围：

0000:Basic Latin 基本拉丁语
0080:Latin-1 Supplement 拉丁语-1补遗
0100:Latin Extended-A 拉丁语扩充-A
0180:Latin Extended-B 拉丁语扩充-B
0250:IPA Extensions 国际音标
02B0:Spacing Modifier Letter]]></description><category></category></item><item><title><![CDATA[从字体文件中获取字体名字]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/42418517</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/42418517</guid><author>ForYourFace</author><pubDate>Mon, 05 Jan 2015 10:38:15 +0800</pubDate><description><![CDATA[Introduction

Everyone 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]]></description><category></category></item><item><title><![CDATA[GUID生成]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/42237459</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/42237459</guid><author>ForYourFace</author><pubDate>Mon, 29 Dec 2014 13:54:16 +0800</pubDate><description><![CDATA[windows下使用微软guidgen.exe
//--生成GUID的代码
//--相关程序/微软guidgen.exe
#include "stdafx.h"
#include 
#include 

//--生成GUID

const char* newGUID()
{
	static char buf[64] = {0};
	GUID guid;
	if (S_OK == ::CoCrea]]></description><category></category></item><item><title><![CDATA[strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/41897071</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/41897071</guid><author>ForYourFace</author><pubDate>Fri, 12 Dec 2014 17:43:29 +0800</pubDate><description><![CDATA[将一个字符串的字符复制给另一个。strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l 的这些版本如 CRT
 中的安全功能 所述，其安全得到了增强。





 重要事项




_mbsncpy_s 和 _mbsncpy_s_l 不能在 Windows 运行时中执行的应用程序中使用。 有关详细信息，请参见 CR]]></description><category></category></item><item><title><![CDATA[C++ 异常]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/41803283</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/41803283</guid><author>ForYourFace</author><pubDate>Mon, 08 Dec 2014 14:29:39 +0800</pubDate><description><![CDATA[一、什么是异常处理

        一句话：异常处理就是处理程序中的错误。

二、为什么需要异常处理，以及异常处理的基本思想

        C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到：一个库的作者可以检测出发生了运行时错误，但一般不知道怎样去处理它们（因为和用户具体的应用有关）；另一方面，库的用户知道怎样处理这]]></description><category></category></item><item><title><![CDATA[protocol buffer出现大量链接错误]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/39078795</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/39078795</guid><author>ForYourFace</author><pubDate>Fri, 05 Sep 2014 11:44:33 +0800</pubDate><description><![CDATA[最近拿到公司一个与protocol buffer有关的]]></description><category></category></item><item><title><![CDATA[timer.hpp]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/39005627</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/39005627</guid><author>ForYourFace</author><pubDate>Tue, 02 Sep 2014 14:22:34 +0800</pubDate><description><![CDATA[class timer
{
 public:
         timer() { _start_time = std::clock(); } // postcondition: elapsed()==0
//         timer( const timer& src );      // post: elapsed()==src.elapsed()
//        ~time]]></description><category></category></item><item><title><![CDATA[mkdir函数-linux]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/34853711</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/34853711</guid><author>ForYourFace</author><pubDate>Thu, 26 Jun 2014 15:55:35 +0800</pubDate><description><![CDATA[mkdir函数

头文件库：

#include 

#include 

函数原型：

int mkdir(const char *pathname, mode_t mode);

函数说明：

mkdir()函数以mode方式创建一个以参数pathname命名的目录，mode定义新创建目录的权限。

返回值：

若目录创建成功，则返回0；否则返回-1，并将错]]></description><category></category></item><item><title><![CDATA[Linux下eclipse修改Makefile参数的方法]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/34101923</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/34101923</guid><author>ForYourFace</author><pubDate>Tue, 24 Jun 2014 14:22:57 +0800</pubDate><description><![CDATA[我再Linux下使用eclipse时，Makefiel文件可以由eclipse自动生成，可以通过修改它的工程配置来改变Makefile的参数

 

如：在使用线程操作时，需要添加-lpthread才能编译通过，修改方法如下：

1、打开eclipse工程文件属性：

 

选择C/C++ Build-->GCC C Link-->Miscellaneous：



 ]]></description><category></category></item><item><title><![CDATA[gcc中-pthread和-lpthread的区别]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/34101391</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/34101391</guid><author>ForYourFace</author><pubDate>Tue, 24 Jun 2014 14:17:09 +0800</pubDate><description><![CDATA[用gcc编译使用了POSIX thread的程序时通常需要加额外的选项，以便使用thread-safe的库及头文件，一些老的书里说直接增加链接选项 -lpthread 就可以了，像这样：


Shell代码  



gcc -c x.c  
gcc x.o -ox -lpthread  


 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项，像这样：]]></description><category></category></item><item><title><![CDATA[Makefile经典教程(掌握这些足够)]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/34058577</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/34058577</guid><author>ForYourFace</author><pubDate>Tue, 24 Jun 2014 09:00:17 +0800</pubDate><description><![CDATA[makefile很重要

      什么是makefile？或许很多Winodws的程序员都不知道这个东西，因为那些Windows的IDE都为你做了这个工作，但我觉得要作一个好的和professional的程序员，makefile还是要懂。这就好像现在有这么多的HTML的编辑器，但如果你想成为一个专业人士，你还是要了解HTML的标识的含义。特别在Unix下的软件编译，你就不能不自己写make]]></description><category></category></item><item><title><![CDATA[Eclipse开发C/C++之使用技巧小结]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/33729051</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/33729051</guid><author>ForYourFace</author><pubDate>Mon, 23 Jun 2014 13:28:55 +0800</pubDate><description><![CDATA[我需要在Linux下开发C++项目，没有VS，用Vim开发是不错，但项目大了，效率

就跟不上IDE了，所以选了Eclipse+CDT插件。当然，Vimers觉得我说的不对的请

勿喷哈，我也是水手一个。Eclipse是个很不错的集成开发环境，安装CDT插件后即可

开发C/C++项目。我的默认安装了CDT，没有装的网上一搜一大堆。这里不再赘述，

直入主题吧。


内容概要]]></description><category></category></item><item><title><![CDATA[设计模式中的委托形式]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/30266207</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/30266207</guid><author>ForYourFace</author><pubDate>Thu, 12 Jun 2014 17:55:29 +0800</pubDate><description><![CDATA[委托（）：是一种组合方式]]></description><category></category></item><item><title><![CDATA[创建模式之生成器BUILDER]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/30253847</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/30253847</guid><author>ForYourFace</author><pubDate>Thu, 12 Jun 2014 15:56:43 +0800</pubDate><description><![CDATA[先看结构图：]]></description><category></category></item><item><title><![CDATA[创建模式之抽象工厂Abstract Factory]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/30243407</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/30243407</guid><author>ForYourFace</author><pubDate>Thu, 12 Jun 2014 15:15:04 +0800</pubDate><description><![CDATA[此模式相对比较简单，是简单的]]></description><category></category></item><item><title><![CDATA[设计模式之创建型：抽象工厂和生成器的混合使用]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/30229991</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/30229991</guid><author>ForYourFace</author><pubDate>Thu, 12 Jun 2014 11:37:57 +0800</pubDate><description><![CDATA[#pragma once
#include 
#include 






namespace MazeSite
{

//====================================================================================================================
/// 
/// 方向, 依次是： 北，]]></description><category></category></item><item><title><![CDATA[C#与C/C++的交互]]></title><link>https://blog.youkuaiyun.com/ForYourFace/article/details/28598077</link><guid>https://blog.youkuaiyun.com/ForYourFace/article/details/28598077</guid><author>ForYourFace</author><pubDate>Thu, 05 Jun 2014 10:35:12 +0800</pubDate><description><![CDATA[最近在编写Warensoft3D游戏引擎，并预计明年年初发布测试版本，底层引擎使用DirectX和MONO来编写，上层的逻辑使用C#来编写，因此编写了大量C#与C++互调的代码，现在经验写出来与大家分享，并希望后来者少走弯路。

C#与C++交互，总体来说可以有两种方法：


利用C++/CLI作为代理中间层

利用PInvoke实现直接调用


第一种方法：实现起来比较简单直]]></description><category></category></item></channel></rss>