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

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>
            亚洲视频第一页| 亚洲美女黄色| 久久视频免费观看| 午夜精品亚洲一区二区三区嫩草| 亚洲精品在线二区| 久久午夜电影网| 久久久97精品| 美女黄毛**国产精品啪啪| 欧美在线看片a免费观看| 日韩视频在线观看免费| 亚洲作爱视频| 亚洲欧美国产精品va在线观看| 一区二区激情视频| 性欧美videos另类喷潮| 亚洲美女在线观看| 激情久久五月天| 在线成人欧美| 国产精品a级| 国产精品视频第一区| 亚洲伊人观看| 欧美一区成人| 蜜桃伊人久久| 欧美日韩在线免费观看| 国产精品乱码人人做人人爱| 国产精品日韩欧美| 国产综合久久久久影院| 在线不卡欧美| 亚洲综合不卡| 亚洲精品一区久久久久久| 久久国产精品久久国产精品| 美女视频黄a大片欧美| 欧美黑人在线观看| 国产日韩在线播放| 在线观看国产一区二区| 日韩一级网站| 久久国产精品一区二区| 亚洲国产高清自拍| 99国产精品国产精品毛片| 久久久久久久999精品视频| 欧美成年人视频| 亚洲天天影视| 欧美成人免费在线| 国内自拍视频一区二区三区| 亚洲综合国产| 亚洲日本aⅴ片在线观看香蕉| 亚洲欧美另类国产| 欧美日韩精品免费观看| 在线观看91精品国产麻豆| 欧美在线免费播放| 在线亚洲激情| 欧美午夜激情小视频| 日韩图片一区| 亚洲电影自拍| 老鸭窝91久久精品色噜噜导演| 国产美女搞久久| 亚洲免费在线播放| av不卡免费看| 国产精品国产三级国产| 一本色道88久久加勒比精品 | 欧美视频在线免费| 伊人久久综合97精品| 久久精品亚洲一区二区| 亚洲综合三区| 国产精品久久久久久av福利软件| 国产精品午夜久久| 午夜视频在线观看一区二区| 亚洲视频一区二区免费在线观看| 欧美视频在线一区二区三区| 亚洲一区二区三区免费观看| 亚洲免费观看视频| 久久久久**毛片大全| 亚洲免费婷婷| 欧美经典一区二区| 一区二区三区精品视频| 亚洲精品偷拍| 欧美性事在线| 午夜精品一区二区三区四区 | 99精品欧美| 亚洲欧洲中文日韩久久av乱码| 欧美成人精品在线视频| 一区二区三区|亚洲午夜| 日韩视频精品在线观看| 国产精品久久久久久久久久久久 | 亚洲国产综合在线看不卡| 欧美.com| 亚洲五月婷婷| 久久国产一区二区| 亚洲国产99| 亚洲调教视频在线观看| 娇妻被交换粗又大又硬视频欧美| 久久夜色精品亚洲噜噜国产mv| 免费看黄裸体一级大秀欧美| 亚洲男人第一av网站| 久久久久久久综合狠狠综合| 亚洲国产精品久久精品怡红院 | 日韩视频在线观看国产| 欧美视频一区在线观看| 玖玖玖免费嫩草在线影院一区| 欧美成人午夜77777| 亚洲欧美一级二级三级| 国产亚洲精品资源在线26u| 欧美区国产区| 久久久久久网| 欧美国产日韩一区二区在线观看| 亚洲无玛一区| 免费欧美高清视频| 欧美一区激情| 欧美精品午夜| 免费在线观看日韩欧美| 国产精品毛片一区二区三区| 欧美第十八页| 国产亚洲精品久| 91久久久久久国产精品| 国内精品久久久久伊人av| 日韩一本二本av| 亚洲国产aⅴ天堂久久| 欧美中文字幕视频在线观看| 一区二区三区视频观看| 久久中文精品| 久久久综合网| 国产日韩高清一区二区三区在线| 亚洲激情在线| 影音先锋亚洲视频| 久久av老司机精品网站导航| 亚洲欧美日韩综合aⅴ视频| 欧美精品麻豆| 亚洲区第一页| 亚洲国产一成人久久精品| 久久国产欧美精品| 欧美国产第一页| 欧美日韩免费观看一区二区三区 | 亚洲线精品一区二区三区八戒| 久久精品毛片| 美日韩在线观看| 国产欧美一区二区精品性色| 亚洲伊人观看| 久久久xxx| 国产一区高清视频| 久久xxxx| 免费日韩一区二区| 一区免费观看| 免费成年人欧美视频| 欧美国产日韩精品| 亚洲黄色免费电影| 亚洲福利免费| 在线播放亚洲| 久久久综合网| 91久久亚洲| 99成人在线| 国产精品成人在线| 亚洲欧美一区二区三区极速播放| 午夜精品成人在线| 国产精品日本精品| 久久成人免费网| 免费av成人在线| 一本一本久久a久久精品综合妖精| 欧美区一区二区三区| 中文久久精品| 久久久美女艺术照精彩视频福利播放 | 一区二区视频免费在线观看 | 国产视频久久网| 久久精品国产99精品国产亚洲性色| 久久免费精品视频| 亚洲国产高清高潮精品美女| 欧美韩日高清| 亚洲欧美日韩系列| 欧美黄网免费在线观看| 亚洲网站在线看| 韩日精品在线| 欧美日韩成人一区| 欧美一区二区三区四区在线观看地址| 久久噜噜噜精品国产亚洲综合| 亚洲区第一页| 国产日产欧产精品推荐色 | 9久re热视频在线精品| 久久精品国产精品| 91久久精品久久国产性色也91| 欧美日韩免费看| 欧美一区二区日韩| 日韩视频一区二区三区在线播放| 久久精品一区四区| 一本色道久久综合亚洲精品不卡| 国产欧美精品一区| 你懂的国产精品| 黄色日韩精品| 久久综合色8888| 蜜臀av在线播放一区二区三区| 亚洲视频狠狠| 在线观看日韩专区| 国产精品xnxxcom| 欧美大片免费观看在线观看网站推荐| 亚洲欧美日韩国产精品| 男女激情久久| 久久精品免费| 午夜精品国产更新| 亚洲黄色毛片| 伊伊综合在线| 精品999网站| 国产欧美va欧美不卡在线| 欧美手机在线视频|