青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

concentrate on c/c++ related technology

plan,refactor,daily-build, self-discipline,

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  37 Posts :: 1 Stories :: 12 Comments :: 0 Trackbacks

常用鏈接

留言簿(9)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

1) 使用windows 頭文件
API 頭文件允許32位和64位應(yīng)用程序,包含了ANSI版本和UNICODE版本的聲明。
如果安裝更新SDK的話(huà),那么就可能有頭文件的多個(gè)版本在機(jī)器上面。
一些函數(shù)的使用可能會(huì)通過(guò)使用條件編譯代碼依賴(lài)于某個(gè)特定版本的操作系統(tǒng),為了編譯成功,你得定義比較合適的macro.頭文件使用宏來(lái)指示哪個(gè)版本系統(tǒng)支持編程元素。
http://msdn2.microsoft.com/en-us/library/aa383745(VS.85).aspx
2) 初始化類(lèi)中的成員模板
i) 使用非模板的方式
template <typename Argtype>
class Option
{
public:
Option( void (*func_name)(Argtype), Argtype Arg1 )
  : MenuFunction<Argtype>( (*func_name)(Argtype), Argtype Arg1 )
 {
 } 
private:
 MenuFunction<Argtype> function;
};
template <typename Argtype>
Option<Argtype> makeOption(void (*func_name)(Argtype), Argtype Arg1 )
{
return Option<Argtype>(func_name, Arg1);
}

ii) 使用多態(tài)
class Option
{
private:
class FunctionBase
{
public:
virtual ~FunctionBase() {}
virtual void call() = 0;
};

template <typename Argtype>
class Function : public FunctionBase
{
public:
Function(void (*func_name)(Argtype), Argtype arg) :
m_func(func_name, arg)
{
}
void call()
{
m_func(); // or whatever
}
private:
MenuFunction<Argtype> m_func;
};

public:
template<typename Argtype> Option( void (*func_name)(Argtype), Argtype Arg1 )
{
 // of course, this means you need a destructor, copy constructor, and assignment operator
// function->call() would invoke the function
function = new Function<Argtype>(func_name, Arg1);

}  
FunctionBase * function;
};
3 大小寫(xiě)字符串比較大小(考慮區(qū)域性語(yǔ)言的問(wèn)題)
#include <iostream>
#include<algorithm>
#include<functional>
#include<boost/bind.hpp>
#include<string>
#include<locale>

struct CaseSensitiveString
{
  public:
       bool operator()(const std::string & lhs,const std::string & rhs)
       {
              std::string lhs_lower;
              std::string rhs_lower;
              std::transform(lhs.begin(),lhs.end(),std::back_inserter(lhs_lower),bind(std::tolower<char>,_1,_loc));
              std::transform(rhs.begin(),rhs.end(),std::back_inserter(rhs_lower),bind(std::tolower<char>,_1,_loc));
              return lhs_lower < rhs_lower;
       }
      CaseSensitiveString(const std::locale & loc):_loc(loc){}
     private:
       std::locale _loc;
};
詳細(xì)內(nèi)容見(jiàn):
http://learningcppisfun.blogspot.com/2008/04/case-insensitive-string-comparison.html

4 找不到msctf.h問(wèn)題
在用DX自帶的dxut做界面程序的時(shí)候,整個(gè)程序編制下來(lái)就出現(xiàn)了這個(gè)錯(cuò)誤
fatal error C1083: Cannot open include file: 'msctf.h': No such file or directory
很詭異的,在dxsdk里面也找不到,想了很久,才發(fā)現(xiàn)自己沒(méi)有安裝platform sdk.因?yàn)閣in32程序之類(lèi)的,最好都要安裝這些sdk之類(lèi)的。具體的信息可以在這里得到
http://www.gamedev.net/community/forums/topic.asp?topic_id=481358
5 重載 , 覆蓋,隱藏
重載與覆蓋有以下的區(qū)別:
重載:同一類(lèi),相同函數(shù)名,不同函數(shù)參數(shù),不一定要有virtual 關(guān)鍵字
覆蓋:子類(lèi)和父類(lèi),相同函數(shù)名,  相同函數(shù)參數(shù),一定要有virtual 關(guān)鍵字
隱藏:1)如果派生類(lèi)的函數(shù)名與基類(lèi)的函數(shù)名相同,但是參數(shù)不同,不論有無(wú)virtual關(guān)鍵字,基類(lèi)的函數(shù)將被隱藏(與重載區(qū)別開(kāi)來(lái))
            2)如果派生類(lèi)的函數(shù)名與基類(lèi)的函數(shù)名相同,并且參數(shù)相同,但是基類(lèi)沒(méi)有virtual關(guān)鍵字,基類(lèi)的函數(shù)將被隱藏(與覆蓋區(qū)別開(kāi)來(lái))
6 快速加載文件
在游戲里面,一般對(duì)從硬盤(pán)或者DVD加載資源要求比較高的,一般采用這樣的方法:

for(int i = 0; < NumBlocks; i++)
{
   // VirtualAlloc() creates storage that is page aligned
   // and so is disk sector aligned
   blocks[i] = static_cast<char *>
      (VirtualAlloc(0, BlockSize, MEM_COMMIT, PAGE_READWRITE));

   ZeroMemory(&overlapped[i], sizeof(OVERLAPPED));
   overlapped[i].hEvent = CreateEvent(0, false, false, 0);
}

HANDLE hFile = CreateFile(FileName, GENERIC_READ, 0, 0, OPEN_EXISTING,
   FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING |
   FILE_FLAG_OVERLAPPED | FILE_FLAG_SEQUENTIAL_SCAN, 0);

int iWriterPos = 0;
int iReaderPos = 0;
int iIOPos = 0;
int iPos = 0;

do
{
   while(iWriterPos - iReaderPos != NumBlocks && iIOPos < FileSize)
   {
      overlapped[iWriterPos & NumBlocksMask].Offset = iIOPos;

      int iLeft = FileSize - iIOPos;
      int iBytesToRead = iLeft > BlockSize ? BlockSize: iLeft;

      const int iMaskedWriterPos = iWriterPos & NumBlocksMask;
      ReadFile(hFile, blocks[iMaskedWriterPos], iBytesToRead, 0,
         &overlapped[iMaskedWriterPos]);

      iWriterPos++;
      iIOPos += iBytesToRead;
   }

   const int iMaskedReaderPos = iReaderPos & NumBlocksMask;

   WaitForSingleObject(overlapped[iMaskedReaderPos].hEvent, INFINITE);

   int iLeft = FileSize - iPos;
   int iBytesToRead = iLeft > BlockSize ? BlockSize: iLeft;

   memcpy(&g_buffer[iPos], blocks[iMaskedReaderPos], iBytesToRead);

   iReaderPos++;
   iPos += iBytesToRead;

}
while(iPos < FileSize);

CloseHandle(hFile);

for(int i = 0; i < NumBlocks; i++)
{
   VirtualFree(blocks[i], BlockSize, MEM_COMMIT);
   CloseHandle(overlapped[i].hEvent);
}

char* s vs char s[]
char s1[] = "abcd";// 定義一個(gè)未指定長(zhǎng)度的char型數(shù)組,并使用字符串"abcd"將之初始化
char *s2  = "abcd";// 定義一個(gè)char型指針,并將其指向字符串"abcd",該字串位于靜態(tài)存儲(chǔ)區(qū)

s1[0] = 'm';// 無(wú)編譯期、運(yùn)行期錯(cuò)誤
s2[0] = 'm';// 無(wú)編譯器錯(cuò)誤,但運(yùn)行期試圖修改靜態(tài)內(nèi)存,所以發(fā)生運(yùn)行期錯(cuò)誤
char s*只是被賦予了一個(gè)指針,char s[]是在棧中重新開(kāi)辟了空間,可以在程序中寫(xiě),而不引起程序崩潰。
所以相比較而言,使用字符串?dāng)?shù)組要比字符指針要安全的多,要慎用char*s 和char s[].
7 can not find MSVCR80.dll
在安裝了vc2005之后,發(fā)現(xiàn)錯(cuò)誤報(bào)告說(shuō)MSVCR80.dll,以為又要重新安裝vc2005了,但是在網(wǎng)絡(luò)上面搜索到另外一個(gè)例子說(shuō),其實(shí)可以不用安裝vc2005,直接改變配置就好了,于是就有這個(gè)了:
http://blogs.msdn.com/seshadripv/archive/2005/10/30/486985.aspx
http://www.codeguru.com/forum/showthread.php?t=439964
工程架構(gòu):
新建一個(gè)空白的 solution.
然后在新建的solution上面添加vcproject.
并且也可以在子空白solution上面添加vcproject.

1>        ]
1>正在編譯資源...
1>正在鏈接...
1>LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/OPT:ICF”規(guī)范)
1>fatal error C1900: Il mismatch between 'P1' version '20060201' and 'P2' version '20050411'
1>LINK : fatal error LNK1257: 代碼生成失敗
1>生成日志保存在“file://e:\demo-work\LocalVersionTianJi\_out\DragoonApp\Release\BuildLog.htm”
1>DragoonApp - 1 個(gè)錯(cuò)誤,5382 個(gè)警告
========== 全部重新生成: 0 已成功, 1 已失敗, 0 已跳過(guò) ==========

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1512436&SiteID=1
http://forum.codecall.net/c-c/6244-fatal-error-c1900-il-mismatch-between-p1-version-20060201-p2-version-2005-a.html
http://www.codeguru.com/forum/archive/index.php/t-144030.html

timeGetTime: 頭文件 mmsystem.h,庫(kù)文件 winmm.lib
獲得當(dāng)前窗口的句柄。
HWND hwnd=::GetForegroundWindow();
hwnd就保存了當(dāng)前系統(tǒng)的最頂層窗口的句柄
GetSafehWnd 取你程序所在窗口類(lèi)的句柄
GetActiveWindow 取當(dāng)前活動(dòng)窗口句柄
AfxGetMainWnd 取主窗口句柄
GetForegroundWindow 取前臺(tái)窗口句柄
FindWindow
EnumWindow
改變窗口屬性:
SetWindowLong
SetClassLong.

strcpy strncpy memcpy.
strcpy:按照msdn的話(huà)說(shuō)是:No overflow checking is performed when strings are copied or appended,即沒(méi)有嚴(yán)格的長(zhǎng)度檢查,所以即使是溢出也無(wú)法被檢查出來(lái),以及The behavior of strcpy is undefined if the source and destination strings overlap.

strncpy:雖然加入了size這個(gè)來(lái)限制,但是這個(gè)size小于或者等于字符長(zhǎng)度的話(huà),那么該信息是不被加上字符串結(jié)束符的.并且仍舊存在跟strcpy一樣的問(wèn)題, The behavior of strncpy is undefined if the source and destination strings overlap

memcpy:具體的用法跟strncpy類(lèi)似,也加入了size的成分在里面,但是卻比strncpy好用得多.

If the source and destination overlap, this function does not ensure that the original source characters in the overlapping region are copied before being overwritten.

Use memmove to handle overlapping regions.

顯然它能夠處理重疊的部分,安全可靠.
并且:

The first argument, dest, must be large enough to hold count characters of src; otherwise, a buffer overrun can occur.


上次遇到的問(wèn)題是我將一串漢字用strcpy來(lái)拷貝到緩沖里面,結(jié)果發(fā)現(xiàn)出現(xiàn)了亂碼.
strncpy, strcpy還是建議少用,換用memcpy+memmove(如果存在重疊的情況)吧:)
未完待續(xù).

posted on 2008-05-12 10:01 jolley 閱讀(2773) 評(píng)論(1)  編輯 收藏 引用

Feedback

# re: 大雜燴 2012-04-30 21:12 陳明澤
請(qǐng)教:fatal error LNK1257: 代碼生成失敗如何解決呢?  回復(fù)  更多評(píng)論
  


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品在线一区二区三区| 亚洲人成网站色ww在线| 精品1区2区3区4区| 久久一区亚洲| 亚洲人成毛片在线播放女女| 亚洲一区二区三区成人在线视频精品| 国产精品国产三级国产aⅴ无密码| 宅男噜噜噜66一区二区| 久久精品理论片| 亚洲激情一区| 欧美视频三区在线播放| 西瓜成人精品人成网站| 欧美成人精品1314www| 99精品视频免费观看视频| 国产精品免费一区二区三区在线观看| 欧美一区中文字幕| 亚洲区一区二| 久久av二区| 亚洲免费成人av| 国产欧美精品日韩区二区麻豆天美| 久久精彩免费视频| 亚洲精品小视频| 久久久久久久久久久久久女国产乱| 最新日韩av| 国产精品影音先锋| 欧美电影在线免费观看网站| 亚洲一区三区在线观看| 亚洲成色777777女色窝| 欧美亚洲视频在线看网址| 亚洲国产一区二区精品专区| 国产精品福利影院| 欧美va亚洲va香蕉在线| 午夜日韩在线观看| 亚洲靠逼com| 欧美成人一区在线| 欧美在线网址| 亚洲视频一二三| 亚洲第一免费播放区| 国产精品无码永久免费888| 欧美大片一区二区| 久久精品人人做人人爽电影蜜月 | 欧美激情导航| 久久国产欧美| 亚洲砖区区免费| 亚洲免费电影在线| 含羞草久久爱69一区| 国产精品人人爽人人做我的可爱| 欧美高清视频在线观看| 久久久夜精品| 久久国产福利| 午夜综合激情| 亚洲一区二区三区涩| 日韩一区二区福利| 亚洲精品激情| 亚洲人成啪啪网站| 亚洲二区在线观看| 欧美成人自拍| 欧美 日韩 国产精品免费观看| 久久精品三级| 久久99伊人| 久久国产精品久久久久久电车 | 91久久国产综合久久91精品网站| 久久综合国产精品台湾中文娱乐网| 午夜精品免费视频| 亚洲综合另类| 亚洲欧美视频在线观看| 亚洲综合精品一区二区| 亚洲影音一区| 亚洲一卡久久| 午夜久久99| 久久国产精品久久w女人spa| 性色一区二区| 久久精品成人一区二区三区蜜臀 | 欧美日韩视频专区在线播放 | 亚洲国产乱码最新视频| 欧美国产日韩精品免费观看| 欧美成人激情视频| 亚洲电影免费在线观看| 亚洲高清一区二| 亚洲精选在线观看| 在线亚洲电影| 午夜欧美大尺度福利影院在线看| 午夜精品久久99蜜桃的功能介绍| 欧美一区二区女人| 久久精品最新地址| 欧美国产日韩一二三区| 欧美三区美女| 国产亚洲欧美另类中文 | 久久国产婷婷国产香蕉| 久久一区二区精品| 亚洲国产成人高清精品| 一区二区三区高清视频在线观看| 亚洲一区二区av电影| 欧美一区视频在线| 你懂的亚洲视频| 欧美性色综合| 国产真实久久| 日韩视频免费在线| 午夜国产不卡在线观看视频| 久久免费国产| 亚洲欧洲午夜| 午夜视频一区| 欧美精品v日韩精品v国产精品| 国产精品r级在线| 伊人婷婷欧美激情| 亚洲视频国产视频| 久久久成人网| 亚洲精品影视| 久久精品视频导航| 欧美日韩精品免费观看视频| 国产午夜精品久久久久久久| 91久久夜色精品国产网站| 亚洲欧美激情四射在线日 | 欧美日韩第一区| 国产欧美日韩免费| 亚洲精品视频在线观看免费| 欧美中文在线字幕| 亚洲国产视频一区二区| 先锋影音国产精品| 欧美久久久久久久| 国内精品久久久久久久果冻传媒 | 99成人在线| 久久精品网址| 国产精品久久二区| 日韩香蕉视频| 蜜臀av一级做a爰片久久 | 欧美视频二区36p| 亚洲电影免费观看高清完整版在线| 亚洲一区二区三区欧美| 欧美激情亚洲另类| 欧美一区二区精品在线| 国产精品成人在线观看| 亚洲七七久久综合桃花剧情介绍| 久久久久88色偷偷免费| 一区二区三区www| 欧美国产三级| 亚洲国产另类久久精品| 久久久精品五月天| 亚洲尤物在线| 欧美日韩三级| 亚洲精品欧美日韩| 欧美成人dvd在线视频| 欧美在线免费| 国产私拍一区| 欧美一区亚洲| 亚洲无玛一区| 国产精品久久久久免费a∨| 一本久道久久久| 亚洲国产精品第一区二区三区| 久久久久久久久综合| 国内精品久久久久久久果冻传媒| 午夜激情一区| 亚洲欧美日韩国产另类专区| 欧美无砖砖区免费| 亚洲网站视频福利| 99re66热这里只有精品3直播 | 午夜日韩电影| 正在播放亚洲一区| 国产精品国产自产拍高清av王其| 一本久久知道综合久久| 亚洲精品日本| 欧美日韩日日骚| 亚洲午夜国产成人av电影男同| 日韩系列在线| 欧美日韩另类视频| 亚洲综合第一页| 亚洲欧美国产制服动漫| 国产美女诱惑一区二区| 久久久久88色偷偷免费| 久久精品99国产精品日本| 在线观看亚洲视频| 亚洲国产精品女人久久久| 欧美精品1区2区| 亚洲一区二区精品在线| 亚洲一线二线三线久久久| 国产亚洲一二三区| 免费观看久久久4p| 欧美福利专区| 亚洲亚洲精品三区日韩精品在线视频| 一区二区三区欧美日韩| 国产欧美在线视频| 欧美a级在线| 欧美日韩国产一区| 午夜精品免费视频| 久久精品五月婷婷| 日韩视频在线观看免费| 亚洲视频在线观看网站| 狠狠爱www人成狠狠爱综合网| 欧美成人dvd在线视频| 欧美日韩一区二区三区| 久久aⅴ国产紧身牛仔裤| 两个人的视频www国产精品| 一区二区三区av| 午夜精品久久| 亚洲国语精品自产拍在线观看| 一级日韩一区在线观看| 国产专区欧美精品| 亚洲精品偷拍| 黄色成人免费观看| 亚洲蜜桃精久久久久久久|