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

concentrate on c/c++ related technology

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

  C++博客 :: 首頁 :: 聯(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的話,那么就可能有頭文件的多個(gè)版本在機(jī)器上面。
一些函數(shù)的使用可能會(huì)通過使用條件編譯代碼依賴于某個(gè)特定版本的操作系統(tǒng),為了編譯成功,你得定義比較合適的macro.頭文件使用宏來指示哪個(gè)版本系統(tǒng)支持編程元素。
http://msdn2.microsoft.com/en-us/library/aa383745(VS.85).aspx
2) 初始化類中的成員模板
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 大小寫字符串比較大小(考慮區(qū)域性語言的問題)
#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)容見:
http://learningcppisfun.blogspot.com/2008/04/case-insensitive-string-comparison.html

4 找不到msctf.h問題
在用DX自帶的dxut做界面程序的時(shí)候,整個(gè)程序編制下來就出現(xiàn)了這個(gè)錯(cuò)誤
fatal error C1083: Cannot open include file: 'msctf.h': No such file or directory
很詭異的,在dxsdk里面也找不到,想了很久,才發(fā)現(xiàn)自己沒有安裝platform sdk.因?yàn)閣in32程序之類的,最好都要安裝這些sdk之類的。具體的信息可以在這里得到
http://www.gamedev.net/community/forums/topic.asp?topic_id=481358
5 重載 , 覆蓋,隱藏
重載與覆蓋有以下的區(qū)別:
重載:同一類,相同函數(shù)名,不同函數(shù)參數(shù),不一定要有virtual 關(guān)鍵字
覆蓋:子類和父類,相同函數(shù)名,  相同函數(shù)參數(shù),一定要有virtual 關(guān)鍵字
隱藏:1)如果派生類的函數(shù)名與基類的函數(shù)名相同,但是參數(shù)不同,不論有無virtual關(guān)鍵字,基類的函數(shù)將被隱藏(與重載區(qū)別開來)
            2)如果派生類的函數(shù)名與基類的函數(shù)名相同,并且參數(shù)相同,但是基類沒有virtual關(guān)鍵字,基類的函數(shù)將被隱藏(與覆蓋區(qū)別開來)
6 快速加載文件
在游戲里面,一般對(duì)從硬盤或者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è)未指定長度的char型數(shù)組,并使用字符串"abcd"將之初始化
char *s2  = "abcd";// 定義一個(gè)char型指針,并將其指向字符串"abcd",該字串位于靜態(tài)存儲(chǔ)區(qū)

s1[0] = 'm';// 無編譯期、運(yùn)行期錯(cuò)誤
s2[0] = 'm';// 無編譯器錯(cuò)誤,但運(yùn)行期試圖修改靜態(tài)內(nèi)存,所以發(fā)生運(yùn)行期錯(cuò)誤
char s*只是被賦予了一個(gè)指針,char s[]是在棧中重新開辟了空間,可以在程序中寫,而不引起程序崩潰。
所以相比較而言,使用字符串?dāng)?shù)組要比字符指針要安全的多,要慎用char*s 和char s[].
7 can not find MSVCR80.dll
在安裝了vc2005之后,發(fā)現(xiàn)錯(cuò)誤報(bào)告說MSVCR80.dll,以為又要重新安裝vc2005了,但是在網(wǎng)絡(luò)上面搜索到另外一個(gè)例子說,其實(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 已跳過 ==========

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

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

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

memcpy:具體的用法跟strncpy類似,也加入了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.


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

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

Feedback

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


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   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>
            美日韩精品视频| 亚洲精选中文字幕| 久久国产精品亚洲77777| 亚洲欧美综合一区| 黄色成人在线网站| 欧美国产先锋| 欧美色图五月天| 久久成人免费| 免费在线国产精品| 亚洲综合999| 久久精品视频导航| 一区二区三区四区五区视频 | 久久天堂成人| 欧美精品激情blacked18| 欧美亚洲视频在线看网址| 久久成人18免费网站| 日韩亚洲精品视频| 亚洲欧美视频| 亚洲美女视频| 久久国产主播精品| 亚洲一区免费看| 久久婷婷综合激情| 西瓜成人精品人成网站| 美女视频网站黄色亚洲| 亚洲欧美在线高清| 欧美大胆人体视频| 久久久久九九九九| 欧美视频二区| 亚洲国产精品ⅴa在线观看 | 欧美婷婷久久| 欧美成人资源网| 国产欧美日韩免费| 亚洲精品中文字幕女同| 伊人成人开心激情综合网| 日韩午夜在线播放| 亚洲人屁股眼子交8| 午夜精品久久久久久久| 一区二区三区四区精品| 免费在线观看一区二区| 久久夜色精品国产| 国产精品色午夜在线观看| 亚洲国产一区二区三区a毛片| 国产欧美一区二区精品仙草咪| 亚洲欧洲精品一区二区三区| 影音欧美亚洲| 久久精品国产亚洲一区二区| 欧美一区视频| 国产精品日韩欧美一区二区三区 | 欧美 日韩 国产精品免费观看| 国产精品日韩欧美一区二区三区| 99re这里只有精品6| 亚洲精品免费在线| 久久这里有精品视频| 久久久国产午夜精品| 国产麻豆成人精品| 亚洲欧美日韩一区二区在线| 香蕉成人伊视频在线观看| 亚洲少妇在线| 国产精品久久久久久av福利软件 | 鲁鲁狠狠狠7777一区二区| 久久久亚洲国产天美传媒修理工| 国产日韩一区二区| 篠田优中文在线播放第一区| 欧美在线亚洲一区| 国产一区二区日韩精品| 久久狠狠婷婷| 免费日韩av电影| 亚洲精选视频免费看| 欧美日本在线看| 一区二区国产日产| 性欧美暴力猛交另类hd| 国产一区 二区 三区一级| 欧美在线一二三| 久久综合伊人77777尤物| 亚洲电影免费在线观看| 欧美成人在线免费观看| 亚洲精品久久久久中文字幕欢迎你 | 欧美精品一区二区三区蜜臀| 亚洲精品欧洲| 性感少妇一区| 国内精品视频在线观看| 裸体歌舞表演一区二区| 日韩视频永久免费| 欧美一区亚洲二区| 亚洲国产一区二区a毛片| 欧美日韩精品免费观看视频完整| 亚洲伊人第一页| 欧美成人在线免费视频| 亚洲一级电影| 欲色影视综合吧| 欧美日韩国产专区| 欧美一区日韩一区| 亚洲国产一区二区三区青草影视| 亚洲欧美另类中文字幕| 精品成人久久| 欧美日韩在线视频观看| 亚洲欧美日韩视频二区| 亚洲国产成人av好男人在线观看| 亚洲欧美日韩另类精品一区二区三区| 国产亚洲一本大道中文在线| 欧美日韩高清在线| 久久精品免费播放| 99热免费精品在线观看| 免费欧美在线| 欧美亚洲一区二区在线| 日韩视频在线观看国产| 国产一区二区0| 国产精品高清在线| 欧美第一黄色网| 久久久亚洲欧洲日产国码αv| 一区二区三区国产精品| 欧美激情亚洲精品| 久久视频国产精品免费视频在线| 亚洲深夜激情| 亚洲人成人77777线观看| 国产一区二区精品丝袜| 国产精品xxxav免费视频| 欧美成人69av| 猫咪成人在线观看| 久久久精品999| 欧美一区二区视频97| 亚洲一区二区久久| 一区二区三区免费观看| 亚洲人成亚洲人成在线观看图片| 精品99视频| 欧美成人dvd在线视频| 久久久久一区| 久久久国际精品| 久久国产精品第一页| 欧美一级黄色网| 午夜电影亚洲| 午夜久久美女| 欧美亚洲视频在线观看| 亚洲欧美日韩国产中文| 亚洲欧美日本日韩| 亚洲欧美成人一区二区在线电影 | 日韩一级大片在线| 日韩视频在线一区二区| 日韩视频免费观看高清完整版| 亚洲国产精品999| 91久久黄色| 99riav久久精品riav| 99精品视频网| 欧美专区在线播放| 99国产精品久久久久老师| 日韩一级精品视频在线观看| 亚洲精品欧美日韩| 中文有码久久| 亚洲欧美制服中文字幕| 香蕉久久精品日日躁夜夜躁| 欧美一区二区在线| 久久性天堂网| 欧美激情在线免费观看| 欧美日韩少妇| 国产乱码精品一区二区三区av| 国产亚洲精品激情久久| 亚洲成在线观看| 日韩视频一区二区三区在线播放免费观看 | 国产一级一区二区| 亚洲国产精品成人综合色在线婷婷| 亚洲高清视频中文字幕| 99riav1国产精品视频| 亚洲综合精品自拍| 久久福利精品| 亚洲福利一区| 亚洲一区二区三区777| 久久久精品五月天| 欧美日韩性视频在线| 国产综合欧美| 亚洲最黄网站| 久久久精品午夜少妇| 亚洲国产精品成人| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美专区日韩视频| 欧美日韩国产在线播放| 国产亚洲欧美aaaa| 艳妇臀荡乳欲伦亚洲一区| 久久成人国产| 日韩午夜中文字幕| 久久亚裔精品欧美| 国产精品入口夜色视频大尺度| 在线色欧美三级视频| 亚洲资源av| 亚洲国产一二三| 欧美在线|欧美| 国产精品扒开腿做爽爽爽视频| 在线观看欧美激情| 欧美一区二区免费| 亚洲人午夜精品| 久久全球大尺度高清视频| 国产精品一卡二卡| 妖精成人www高清在线观看| 久久综合给合| 亚洲影院色无极综合| 欧美精品亚洲一区二区在线播放| 国精品一区二区| 欧美中文字幕视频| 99精品欧美一区二区蜜桃免费| 久色成人在线| 红桃av永久久久|