锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美国产日本在线,老鸭窝毛片一区二区三区,亚洲一区二区三区欧美http://www.shnenglu.com/85940806/Enhance Tech and Englishzh-cnSun, 24 Aug 2025 06:05:22 GMTSun, 24 Aug 2025 06:05:22 GMT60CreateProcesshttp://www.shnenglu.com/85940806/archive/2012/04/12/171107.htmlMike SongMike SongThu, 12 Apr 2012 08:59:00 GMThttp://www.shnenglu.com/85940806/archive/2012/04/12/171107.htmlhttp://www.shnenglu.com/85940806/comments/171107.htmlhttp://www.shnenglu.com/85940806/archive/2012/04/12/171107.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/171107.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/171107.html    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    si.cb = sizeof(STARTUPINFO);
    si.lpReserved = NULL;
    si.lpTitle = NULL;
    si.lpDesktop = NULL;
    si.dwX = si.dwY = si.dwYSize = si.dwXSize = 0;
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    si.lpReserved2 = NULL;
    si.cbReserved2 = 0;

    BOOL ret = CreateProcess(strHostFileFullName, NULL, NULL, NULL, FALSE, 0, NULL, strPath, &si, &pi);
    if (!ret) {
        return false;
    }

    WaitForInputIdle(pi.hProcess, 30000);

    XXXCtxActivator activator;
    if(!activator.IsActivated())
        return false;

    CComPtr<IClassFactory> pFactory;
    HRESULT hr = CoGetClassObject(CLSID_XXX, CLSCTX_LOCAL_SERVER, NULL, __uuidof(pFactory), reinterpret_cast<void**>(&pFactory));
    if (FAILED(hr))
        return false;

    CComPtr<IXXX> s_spXXX;
    hr = pFactory->CreateInstance(NULL, __uuidof(*s_spXXX), reinterpret_cast<void**>(&s_spXXX));
    if(FAILED(hr))
        return false;
    
    // If created successfully, start the monitoring thread
    DWORD dwProcessId = GetCurrentProcessId();
    long nMonitoringPid = 0;

    hr = s_spXXX->StartProcessManagementThread(dwProcessId, &nMonitoringPid);    if (FAILED(hr) || nMonitoringPid == 0)
        return false;


Mike Song 2012-04-12 16:59 鍙戣〃璇勮
]]>
Why "The system cannot find the batch label specified" is thrown even if label exists?http://www.shnenglu.com/85940806/archive/2011/08/30/154716.htmlMike SongMike SongTue, 30 Aug 2011 09:27:00 GMThttp://www.shnenglu.com/85940806/archive/2011/08/30/154716.htmlhttp://www.shnenglu.com/85940806/comments/154716.htmlhttp://www.shnenglu.com/85940806/archive/2011/08/30/154716.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/154716.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/154716.htmlThis is caused by the different line endings after syncing from P4. The P4 client has settings for LineEnd, "local" will show CRLF, while "share" shows LF. This error maybe only existing in x86 machine.








This is tricky issue. Thanks very much for Jeffery's help.

Mike Song 2011-08-30 17:27 鍙戣〃璇勮
]]>
mutablehttp://www.shnenglu.com/85940806/archive/2011/06/23/149239.htmlMike SongMike SongThu, 23 Jun 2011 02:39:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/23/149239.htmlhttp://www.shnenglu.com/85940806/comments/149239.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/23/149239.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/149239.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/149239.html
mutable鑻遍煶錛?mju:t蓹bl緹庨煶錛?mjut蓹b!錛屽艦瀹硅瘝錛屾剰涓烘槗鍙樼殑;鍙嶅鏃犲父鐨勩傚湪C++璇█涓紝鏄懡浠よ璦——濡傛灉涓涓嚱鏁拌const 淇グ錛岄偅涔堝畠灝嗘棤娉曚慨鏀瑰叾鎴愬憳鍙橀噺鐨勶紝浣嗘槸濡傛灉榪欎釜鎴愬憳鍙橀噺鏄mutable淇グ鐨勮瘽錛屽垯鍙互淇敼銆?/div>
mutable 鍙互鐢ㄦ潵鎸囧嚭錛屽嵆浣跨粨鏋勬垨鑰呯被鍙橀噺涓篶onst錛屽叾鏌愪釜鎴愬憳涔熷彲浠ヨ淇敼銆?

鍦╟++鐨勭被涓紝 濡傛灉涓涓嚱鏁拌const 淇グ錛岄偅涔堝畠灝嗘棤娉曚慨鏀瑰叾鎴愬憳鍙橀噺鐨勶紝浣嗘槸濡傛灉榪欎釜鎴愬憳鍙橀噺鏄mutable淇グ鐨勮瘽錛屽垯鍙互淇敼銆?/div>
渚嬪:
struct data
銆銆{
銆銆
char name[30];
銆銆mutable 
int accesses;
銆銆.
銆銆};
銆銆
const data veep = {"david";,0,}
銆銆strcpy(veep.name,
"Jimmy");// not allowed
銆銆veep.accesses++// allowed

銆veep 鐨刢onst闄愬畾絎︾姝㈢▼搴忎慨鏀箆eep鐨勬垚鍛橈紝浣哸ccess鎴愬憳鐨刴utable璇存槑絎﹁〃紺篴ccess涓嶅彈榪欑闄愬埗銆?/div>


Mike Song 2011-06-23 10:39 鍙戣〃璇勮
]]>Abstract Factoryhttp://www.shnenglu.com/85940806/archive/2011/06/11/148511.htmlMike SongMike SongSat, 11 Jun 2011 14:47:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148511.htmlhttp://www.shnenglu.com/85940806/comments/148511.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148511.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148511.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148511.html闃呰鍏ㄦ枃

Mike Song 2011-06-11 22:47 鍙戣〃璇勮
]]>
Factory Methodhttp://www.shnenglu.com/85940806/archive/2011/06/11/148510.htmlMike SongMike SongSat, 11 Jun 2011 14:39:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148510.htmlhttp://www.shnenglu.com/85940806/comments/148510.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148510.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148510.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148510.html
鍚嶇О Factory Method
緇撴瀯

鎰忓浘 瀹氫箟涓涓敤浜庡垱寤哄璞$殑鎺ュ彛錛岃瀛愮被鍐沖畾瀹炰緥鍖栧摢涓涓被銆侳actory Method 浣夸竴涓被鐨勫疄渚嬪寲寤惰繜鍒板叾瀛愮被銆?/td>
閫傜敤鎬?/td>
  • 褰撲竴涓被涓嶇煡閬撳畠鎵蹇呴』鍒涘緩鐨勫璞$殑綾葷殑鏃跺欍?
  • 褰撲竴涓被甯屾湜鐢卞畠鐨勫瓙綾繪潵鎸囧畾瀹冩墍鍒涘緩鐨勫璞$殑鏃跺欍?
  • 褰撶被灝嗗垱寤哄璞$殑鑱岃矗濮旀墭緇欏涓府鍔╁瓙綾諱腑鐨勬煇涓涓紝騫朵笖浣犲笇鏈涘皢鍝竴涓府鍔╁瓙綾繪槸浠g悊鑰呰繖涓淇℃伅灞閮ㄥ寲鐨勬椂鍊欍?





namespace FactoryMethod
{
  
public abstract class LightFactory
  {
    
public abstract Light CreateLight();
  }

  
public class BulbLightFactory : LightFactory
  {  
    
public override Light CreateLight()
    {
      
return new BulbLight();
    }
  }

  
public class TubeLightFactory : LightFactory
  {
      
public override Light CreateLight()
      {
        
return new TubeLight();
      }
  }
}

namespace FactoryMethod
{
  
public abstract class Light
  {
    
public abstract void TurnOn();
    
public abstract void TurnOff();
  }

  
public class BulbLight : Light
  {
    
public override void TurnOn()
    {
      Console.WriteLine(
"Bulb Ligh is Turned on.\n");
    }
    
public override void TurnOff()
    {
      Console.WriteLine(
"Bulb Ligh is Turned off.\n");
    }
  }

  
public class TubeLight : Light
  {
    
public override void TurnOn()
    {
      Console.WriteLine(
"Tube Ligh is Turned on.\n");
    }
    
public override void TurnOff()
    {
      Console.WriteLine(
"Tube Ligh is Turned off.\n");
    }
  }
}


namespace FactoryMethod
{
  
public class Client
  {
    
  
public static void Main()
    {
      LightFactory BulbFactory 
= new BulbLightFactory();
      LightFactory TubeFactory 
= new TubeLightFactory();

      Light l1 
= BulbFactory.CreateLight();
      Light l2 
= TubeFactory.CreateLight();

      l1.TurnOn();
      l1.TurnOff();

      Console.WriteLine(
"===============\n");

      l2.TurnOn();
      l2.TurnOff();
    }
  }
}


Mike Song 2011-06-11 22:39 鍙戣〃璇勮
]]>Observer http://www.shnenglu.com/85940806/archive/2011/06/11/148509.htmlMike SongMike SongSat, 11 Jun 2011 14:32:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148509.htmlhttp://www.shnenglu.com/85940806/comments/148509.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148509.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148509.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148509.html鍚嶇О Observer 緇撴瀯 ...  闃呰鍏ㄦ枃

Mike Song 2011-06-11 22:32 鍙戣〃璇勮
]]>
15 - memchrhttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.htmlMike SongMike SongSat, 11 Jun 2011 14:11:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.htmlhttp://www.shnenglu.com/85940806/comments/148508.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148508.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148508.html/***
*char *memchr(buf, chr, cnt) - search memory for given character.
*
*Purpose:
*       Searches at buf for the given character, stopping when chr is
*       first found or cnt bytes have been searched through.
*
*Entry:
*       void *buf  - memory buffer to be searched
*       int chr    - character to search for
*       size_t cnt - max number of bytes to search
*
*Exit:
*       returns pointer to first occurence of chr in buf
*       returns NULL if chr not found in the first cnt bytes
*
*Exceptions:
*
******************************************************************************
*/

void * __cdecl memchr (
        
const void * buf,
        
int chr,
        size_t cnt
        )
{
        
while ( cnt && (*(unsigned char *)buf != (unsigned char)chr) ) {
                buf 
= (unsigned char *)buf + 1;
                cnt
--;
        }

        
return(cnt ? (void *)buf : NULL);
}


Mike Song 2011-06-11 22:11 鍙戣〃璇勮
]]>
14 - memcpy and memmove differencehttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.htmlMike SongMike SongSat, 11 Jun 2011 14:09:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.htmlhttp://www.shnenglu.com/85940806/comments/148507.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148507.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148507.html/***
*memmove - Copy source buffer to destination buffer
*
*Purpose:
*       memmove() copies a source memory buffer to a destination memory buffer.
*       This routine recognize overlapping buffers to avoid propogation.
*       For cases where propogation is not a problem, memcpy() can be used.
*
*Entry:
*       void *dst = pointer to destination buffer
*       const void *src = pointer to source buffer
*       size_t count = number of bytes to copy
*
*Exit:
*       Returns a pointer to the destination buffer
*
*Exceptions:
******************************************************************************
*/

void * __cdecl mymemcpy (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;
  
/*
  * copy from lower addresses to higher addresses
  
*/
  
while (count--) {
    
*(char *)dst = *(char *)src;
    dst 
= (char *)dst + 1;
    src 
= (char *)src + 1;
  }

  
return(ret);
}

void * __cdecl mymemmove (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;

  
if (dst <= src || (char *)dst >= ((char *)src + count)) {
    
/*
    * Non-Overlapping Buffers
    * copy from lower addresses to higher addresses
    
*/
    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst + 1;
      src 
= (char *)src + 1;
    }
  }
  
else {
    
/*
    * Overlapping Buffers
    * copy from higher addresses to lower addresses
    
*/
    dst 
= (char *)dst + count - 1;
    src 
= (char *)src + count - 1;

    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst - 1;
      src 
= (char *)src - 1;
    }
  }

  
return(ret);
}

int _tmain(int argc, _TCHAR* argv[])
{
  
int i = 0;
  
int a[10];

  
for(i; i < 10; i++)
  {
    a[i] 
= i;
  }

  mymemcpy(
&a[4], a, sizeof(int)*6);

  
for(i = 0; i < 10; i++)
  {
    printf(
"%d ",a[i]);
  }

  printf(
"\n");

  
for(i=0; i < 10; i++)
  {
    a[i] 
= i;
  }
  mymemmove(
&a[4], a, sizeof(int)*6);

  
for(i = 0; i < 10; i++)
  {
    printf(
"%d ",a[i]);
  }

  printf(
"\n");

    
return 0;
}


Result:
0 1 2 3 0 1 2 3 0 1
0 1 2 3 0 1 2 3 4 5



Mike Song 2011-06-11 22:09 鍙戣〃璇勮
]]>
13 - memmovehttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.htmlMike SongMike SongSat, 11 Jun 2011 13:52:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.htmlhttp://www.shnenglu.com/85940806/comments/148506.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148506.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148506.html/***
*memmove - Copy source buffer to destination buffer
*
*Purpose:
*       memmove() copies a source memory buffer to a destination memory buffer.
*       This routine recognize overlapping buffers to avoid propogation.
*       For cases where propogation is not a problem, memcpy() can be used.
*
*Entry:
*       void *dst = pointer to destination buffer
*       const void *src = pointer to source buffer
*       size_t count = number of bytes to copy
*
*Exit:
*       Returns a pointer to the destination buffer
*
*Exceptions:
******************************************************************************
*/

void * __cdecl memmove (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;

  
if (dst <= src || (char *)dst >= ((char *)src + count)) {
    
/*
    * Non-Overlapping Buffers
    * copy from lower addresses to higher addresses
    
*/
    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst + 1;
      src 
= (char *)src + 1;
    }
  }
  
else {
    
/*
    * Overlapping Buffers
    * copy from higher addresses to lower addresses
    
*/
    dst 
= (char *)dst + count - 1;
    src 
= (char *)src + count - 1;

    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst - 1;
      src 
= (char *)src - 1;
    }
  }

  
return(ret);
}


Mike Song 2011-06-11 21:52 鍙戣〃璇勮
]]>
12 - memset http://www.shnenglu.com/85940806/archive/2011/06/11/148505.htmlMike SongMike SongSat, 11 Jun 2011 13:32:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148505.htmlhttp://www.shnenglu.com/85940806/comments/148505.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148505.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148505.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148505.html/***
*char *memset(dst, val, count) - sets "count" bytes at "dst" to "val"
*
*Purpose:
*       Sets the first "count" bytes of the memory starting
*       at "dst" to the character value "val".
*
*Entry:
*       void *dst - pointer to memory to fill with val
*       int val   - value to put in dst bytes
*       size_t count - number of bytes of dst to fill
*
*Exit:
*       returns dst, with filled bytes
*
*Exceptions:
*
******************************************************************************
*/

void * __cdecl memset (
  
void *dst,
  
int val,
  size_t count
  )
{
  
void *start = dst;

  
while (count--) {
    
*(char *)dst = (char)val;
    dst 
= (char *)dst + 1;

  
return(start);
}


Mike Song 2011-06-11 21:32 鍙戣〃璇勮
]]>
成人综合久久精品色婷婷| 久久ZYZ资源站无码中文动漫| 国产农村妇女毛片精品久久| 欧洲性大片xxxxx久久久| 久久精品国产免费观看 | 欧美大战日韩91综合一区婷婷久久青草| 国产精品无码久久四虎| 色狠狠久久综合网| 久久综合久久综合久久综合| 2021国内精品久久久久久影院| 精品国际久久久久999波多野| 久久精品国产国产精品四凭| 麻豆AV一区二区三区久久 | 久久精品嫩草影院| 中文字幕久久精品无码| 久久精品18| 久久伊人精品青青草原高清| 久久久久无码精品国产不卡| 久久精品视频一| 久久亚洲av无码精品浪潮| 亚洲乱亚洲乱淫久久| 丁香狠狠色婷婷久久综合| 伊人久久大香线焦AV综合影院| 天堂无码久久综合东京热| 久久高潮一级毛片免费| 久久99精品国产麻豆宅宅| 久久亚洲AV成人无码国产| 久久婷婷成人综合色综合| 久久久久国产精品人妻| 国产香蕉久久精品综合网| 午夜精品久久久久9999高清| 四虎亚洲国产成人久久精品| 欧洲国产伦久久久久久久 | 97久久国产亚洲精品超碰热 | 老司机午夜网站国内精品久久久久久久久 | 奇米综合四色77777久久| 国产aⅴ激情无码久久| 精品久久久久久中文字幕大豆网| 国产精品久久久久久久久软件| 亚洲国产成人乱码精品女人久久久不卡 | 国产69精品久久久久观看软件 |