
æè¿ãC ++ã³ãŒãã®éç解æã®ããã®æ°ããããŒã«ãHabré-
CppCatã§çºè¡šãã
ãŸãã ã 以åã®ãããžã§ã¯ãïŒPVS-StudioïŒã«ã€ããŠããã®èè
ã¯Habréã«ã€ããŠé·ãéã詳现ã«èªã£ãŠããŸããã 圌ã«å¯Ÿããç§ã®æ
床ã¯2ã€ãããŸãã-äžæ¹ã§ã¯ããã¡ããéçåæãå¿
èŠã§ãã 圌ãããªããã°ã圌ãããªããŠãè¯ãã äžæ¹ãPVS-Studioã¯ããã®èŠæš¡ãäžçš®ã®ããšã³ã¿ãŒãã©ã€ãºãããããŠäŸ¡æ Œã§æãã£ãŠããŸããã çŽ50人ã®ãããžã§ã¯ãããŒã ãã©ã®ããã«è³Œå
¥ã§ãããã«ã€ããŠã¯ããç¥ã£ãŠããŸãããã1人ã®éçºè
ãŸãã¯çŽ5人ã®ããŒã ã§äœãã§ããã®ãç解ã§ããŸããã§ããã ã©ããããããèè
ãPVSãã¯ã©ãŠããšããŠãµãŒãã¹ãšããŠå±éãããã®ã¢ã¯ã»ã¹ãæééãã«è²©å£²ããããšã
ææ¡ããããšãèŠããŠããŸãã ãããã圌ãã¯ç¬èªã®æ¹æ³ã§ãæ¯èŒçå°ãªããéã§æ©èœãåæžããããŒãžã§ã³ãäœæããŸããïŒãã®ãããªäºç®ã¯ãçªç Žãããããèªåã§è³Œå
¥ããããšããå¯èœã§ãïŒã
ã²ãŒã ãããããã«å€ãããã©ããèŠãŠã¿ãŸãããã
ã€ã³ã¹ããŒã«äžã«ããã«æ°ã«å
¥ããªãæåã®ããšã¯ãVisual Studio 2005 \ 2008ãšã®çµ±åã®æ¬ åŠã§ãã ããããå€ãããŒãžã§ã³ã®ã¹ã¿ãžãªã«ã¯æ¡åŒµçšã®å®å
šã«ç°ãªãAPIããããããããµããŒãããããã«è¿œå ã®åªåãå¿
èŠãªå Žåãããããšãç解ããŠããŸãããC ++ã¯ãŸã£ããè¥ãèšèªã§ã¯ãªããç§ãééãããããžã§ã¯ãã®å€ãã¯ãŸã VS2008ã«äœãã§ããŠèª°ãããŸããååæããšã«çŽ12è¡ãç·šéããå¿
èŠãããå Žåã移è¡ããäºå®ã¯ãããŸããã ã¬ã¬ã·ãŒã䜿çšããã«ã¯ããŸã æ¬æ ŒçãªPVS-Studioãå¿
èŠã§ãã 倧äžå€«ã
Visual Studioãšã®çµ±åã«ãããããããªãºã ã¯ã次ã®ç¹ã«æºè¶³ããŠããŸãã2ã€ã®ãã€ã³ãã®ã¡ãã¥ãŒã1ã€ã®ããŒã«ããŒ-ãã以äžã ããã«ãæã«è§£æãæå¹ã«ãããDAWã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãã ãªãã§ïŒ ç§ã¯ãåãã«ãã®é床ãèœãšãã®ã§ã¯ãªããããšãã°ãªããžããªã«ã³ãããããåã«ãããžã§ã¯ãå
šäœãåæããæ¹ãè«ççã«æããŸãã svn \ gitã¯ã©ã€ã¢ã³ãã®pre-commitããã¯ã«ã€ããŠãéçã¢ãã©ã€ã¶ãŒã䜿çšããŠæ°ããã³ãŒãããã§ãã¯ããããšããå§ãããŸãã
ãã¹ãã®å®¢èŠ³æ§ã®ããã«ã3ã€ã®ãããžã§ã¯ããéžæããŸããã
- Notepad ++ ïŒããã¯æªãã³ãŒãã ãšæã ïŒ
- ZeroMQ ïŒããã¯è¯ããµã³ãã«ã³ãŒãã ãšæããŸãïŒ
- ç§ã®æã®äœæ¥ãããžã§ã¯ãã®1ã€-ç§ã¯äœå¹Žãåã«æžããŸãããã確ãã«å€ãã®æããªééãããããŸã
Notepad ++ãšZeroMQãéžæãããã®ã¯ãäž¡æ¹ã®éçºã®çµéšãã»ãšãã©ãªãã£ãããã§ã-æåéãããã¡ãã¡ã®ããã€ãã®ãããããã§ãããå°ãªããšãã³ã³ãã€ã«ãšãã§ãã¯ã®æ¹æ³ãç解ããå¿
èŠã¯ãããŸããã§ããïŒVS2010ã§ãã«ãããå¯èœæ§ã«ã€ããŠã¯ç¢ºä¿¡ããŠããŸããïŒã
ã¡ã¢åž³++
ãããžã§ã¯ãå
ã®86ãã¡ã€ã«ããã«ã¹ãã£ã³ã®å Žåã¯2åã CppCatããã®çãããã³ãŒãã«é¢ãã48ã¡ãã»ãŒãžïŒãã¡ã€ã«ãããå¹³å0.55ã¡ãã»ãŒãžïŒ
ããããééãã¯ããã€ãã転éããããšãããšãã«ãè«ççãªãandããšãããåäœã®ãandããæ··åãããããšã§ããToAscii(wParam,(lParam >> 16) && 0xff,keys,&dwReturnedValue,0);
è² ã®åãã§ã㯠WPARAM wParam ... if(wParam<0)
ã€ã³ããã¯ã¹ã-1ãã®é
åã»ã«ã®æœåšçãªã¢ãã¬ã¹æå® j=lstrlen(BGHS[SelfIndex].editstring); BGHS[SelfIndex].editstring[j-1]=0x00;
ãããééãã§ããããšã¯ãŸã£ããäºå®ã§ã¯ãããŸããããã®åã«ç©ºã®è¡ããã§ãã¯ãããå¯èœæ§ã¯ãããŸãããã±ãŒã¹ãæåŸ
ããªãæ¹ãè¯ããšæãããŸãã
äºéå²ãåœãŠã äžã€ã®ããšã¯æããã«äœåã§ãã lpcs = &cs; lpcs = (LPCREATESTRUCT)lParam;
建ç¯æ¡ä»¶ã®ãã³ã»ã³ã¹ã if(MATCH) { return returnvalue+MAX_GRIDS; } if(!MATCH))
æ£ããå²ãåœãŠãããã¡ã¢ãªã®èª€ã£ããã§ã㯠char *source = new char[docLength]; if (source == NULL)
ç§ã®å人çãªçµ±èšã«ãããšãããã¯C ++ã³ãŒãã§æãããããééãã§ãïŒãã®ãããžã§ã¯ãã§ã¯24åçºçããŸãïŒã Cããã®ã¡ã¢ãªå²ãåœãŠé¢æ°ã«ã«ãŒããããããšã©ãŒæã«NULLãè¿ããŸããã ããããC ++ã§newæŒç®åã䜿çšããŠã䜿çšå¯èœãªã¡ã¢ãªãäžè¶³ããŠããŸããïŒããã§ãã¯ããå Žåãstd :: bad_allocäŸå€ããã£ããããNULLã®çµæããã§ãã¯ããå¿
èŠã¯ãããŸããã
éå°ãªåŠæ³ TCHAR intStr[5]; ... if (!intStr)
ããã°ã©ã å
ã§ãããŒã«ã«ã§å®£èšããã5æåã®é
åãžã®ãã€ã³ã¿ãŒãNULLã«ãªã£ãå Žåãäœããã²ã©ãèœã¡ãã®ã§ããã èœã¡ãã»ããè¯ãã§ãããã
åãç¶æ
ã®ããã«ãã§ã㯠do { ... } while(openFound.success && (styleAt == SCE_H_DOUBLESTRING || styleAt == SCE_H_DOUBLESTRING) && searchStartPoint > 0);
ããã§ã圌ãã¯åŒçšç¬ŠïŒããã«ãšã·ã³ã°ã«ïŒãèŠã€ããããšããŸããããå®éã«ã¯ããã«ãã§ãã¯ãããããã«ã§ãã 2çªç®ã®ãã§ãã¯ãããã»ã¹ã§å¿ããŠããSCE_H_SINGLESTRINGã«çœ®ãæããèšç»ãã³ããŒããŠè²Œãä»ããŸãã èŠã€ãã£ãæãæçšãªãã°ã®1ã€ã¯ãå®éã«ã¯XMLããŒãµãŒã®ãã°ã§ãããåãªããæ¹åã¢ããã€ã¹ãã§ã¯ãããŸããã
ééã£ãïŒç§ã®æèŠã§ã¯ïŒå¿ç
åãæ¡ä»¶ã®2ã€ã®é£ç¶ããifãããã¯
ããã§ç§ã¯CppCatã«åæããŸããã ããã°ã©ãããã®ããã«æžãããšã«ããçç±ã誰ãç¥ã£ãŠããŸããïŒ ã³ãŒãã¯æå¹ã§ãããŸãæ©èœããŠããŸãã ãåé€ããã®ãå¿ããïŒããšããééãã¯ããåŸãŸãããããã§ãªããã°ãããã®ä»ããããããã§ãã ãŸãã«ãã®ãããªèšèšã³ãŒãã
ããã€ãã®ãšã©ãŒãã&&ãæäœã®åªå
床ã¯ã||ãã®åªå
床ãããé«ã æäœÂ»
printPage = (!(_pdlg.Flags & PD_PAGENUMS) || (pageNum >= _pdlg.nFromPage) && (pageNum <= _pdlg.nToPage));
CppCatã¯ãããã°ã©ãã¯æäœã®åªå
é äœãç¥ããªããšåºãä¿¡ããŠããŸãã ãã®å Žåãæå³ãšãã€ãããŒã·ã§ã³ã®äž¡æ¹ã§ãããã°ã©ããŒãèªåãäœãããŠããããç¥ã£ãŠããããšã¯æããã§ãã ãã¡ããããæ瀺çã¯æé»çãããåªããŠããŸãããããšã©ãŒã¯ãããŸããã
ã¢ãã©ã€ã¶ãŒã¯ãä»ã®ã³ã³ãã€ã«ããŒã§ã¯æå³ã®ãªãã³ãŒããæå³ããªããšã¯æ³å®ããŠããŸããã
if (unicodeSupported) ::DispatchMessageW(&msg); else
ããã¯ããïŒdefine DispatchMessage DispatchMessageWãã以åã«èšè¿°ãããããã§ãã ããããããã«ãããŸã-ãã®çœ®æã¯æ¡ä»¶ä»ãã³ã³ãã€ã«ãã¯ãã«ãã£ãŠæå¹ã«ãªããŸãã ãã®å Žåãã³ãŒãã¯å®éã«ã¯æå³ããããŸããããä»ã®ããŒã䜿çšããŠãããžã§ã¯ããã³ã³ãã€ã«ãããšãDispatchMessageã¯DispatchMessageAãæããŸããããã¯ã³ãŒããæå³ããªãããšãæå³ããŸãã
ãã¡ãããæ¬ ç¹ããããŸãããä»ã«ã©ã®ãããªã³ã³ãã€ã«ãªãã·ã§ã³ãããã®ãââããæšæž¬ããããã«éçã¢ãã©ã€ã¶ãŒãèŠæ±ããã®ã¯äžå
¬å¹³ã§ãã ããããããã«ã€ããŠèããããã°ã©ãããã¯å®³ã¯ãããŸããã
ã¡ã¢åž³++åºåç§ã®æèŠã§ã¯ã48ã®ãšã©ãŒã¡ãã»ãŒãžã®ãã¡ãçŽ38ã泚æãšã³ãŒãã®äžéšã®å€æŽã«æ¬åœã«å€ããŸãã ãããã®ãã¡ã30ç®æã¯æãããªãã°ã§ããã8ç®æã¯äŸ¿å©ã§ããããªãã·ã§ã³ã®ã¹ã¿ã€ã«å€æŽã§ãã ã³ãŒãããžãã¯ã®ã³ã³ããã¹ãã§ã¯ãCppCatããã®10件ã®æçš¿ãfalseãšèŠãªããŸãã å
šäœçã«-æªããªãã
ZeroMq
72ãã¡ã€ã«ã1åéã®åæã
çãããå Žæã1ã€ã ãèŠã€ãããŸããã ãããŠãããã¯å®éã«ã¯ééã£ãŠããŸãã
rc = pipe_->write (&probe_msg_);
ã¢ãã©ã€ã¶ãŒã¯ãæåãš2çªç®ã®å²ãåœãŠã®éã«è²§åŒ±ãªrcãå¿
èŠãšãã人ãããªããšããäºå®ã«åæºããŠããŸãã ã¯ããå¿
èŠãããŸããã ããããçµå±ã®ãšããïŒ
- ãããã°äžã«ãã¬ãŒã¯ãã€ã³ããèšå®ãããããçãããã©ããã確èªãããšäŸ¿å©ã§ãã
- ããã«rcãã§ãã¯ã以åã«ãã£ãïŒãŸãã¯ãã£ãå¯èœæ§ãããïŒããšã瀺ãã³ã¡ã³ãããããŸãã 圌ã¯ãŸãããã®ãã§ãã¯ã¯çµ¶å¯Ÿã«å¿
èŠã§ã¯ãªããšèšããŸãã
ãã¡ãããã¢ãã©ã€ã¶ãŒã¯ã³ã¡ã³ããèªã矩åã¯ãªããããããã§ãã¹ãŠãåé¡ãªãçç±ã¯ããããŸããã
ZeroMqã®çµè«ã³ãŒãå
ã®çãããå Žæã«é¢ããæçšãªã¡ãã»ãŒãžã¯1ã€ã§ã¯ãããŸããã ãŸããæåããããã®ã©ã€ãã©ãªã®ã³ãŒãã«ã€ããŠéåžžã«é«ãæèŠããããšèšã£ãã
ç§ã®ãããžã§ã¯ã
420ãã¡ã€ã«ïŒ8ã€ã®ãµããããžã§ã¯ãïŒãåæã«9åã99ã®èŠåã ããã¯ããã¡ã€ã«ãããå¹³å0.23èŠåã§ãã
ã¿ã€ãstd ::ãªã¹ãã®äœ¿çšã«ãããæããªééã void CHttpDownloaderBase::GetResponseHeader(const std::string& strHeaderName, std::list<std::string>& listValues) const { listValues.empty();
æ··ä¹±ã¯ãäžéšã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ã空ã®ã³ã³ããã¿ã€ãã¡ãœãããå®éã«ã³ã³ãããã¯ãªã¢ããããšã§ãã ããããstd ::ãªã¹ãã®å Žåãããã¯åãªãç¡å¹ãã§ãã¯ã§ãã ã¯ãªã¢ïŒïŒã«çœ®ãæããå¿
èŠããããŸã
æåã®äœ¿çšåŸã®ãã€ã³ã¿ãŒã®ç¢ºèª const char *xml_attr(xml_t* xml, const char *attr) { ... const char *name = xml->name; if (! xml || ! xml->attr)
æªå®çŸ©ã®åäœ while (*(n = ++s + strspn(s, XML_WS)))
å®éãVS2010ã®C ++ã³ã³ãã€ã©ã§ã¯ããã®ã³ãŒãã¯æå³ãããšããã«æ©èœããŸãã ããããæ£åŒã«ã¯-ã¯ããæšæºã§ã¯ãäžå®ã®åäœããšæžãããŠããŸãã ãããä¿®æ£ããæ¹ãè¯ãã
æªåé«ãéçšäžã®åªå
äºé
if (!text[++r] == '\\')
æŒç®åãïŒãã¯ç°¡åã§ã ã==ãããã
åªå
床ãé«ã ãã€ã³ã¿ãŒæŒç® TCHAR *ch = path + lstrlen(path) - 1;
ãã€ã³ã¿ãŒããšã«å€ãå€æŽããããšããCppCatã®ææ¡ã¯ééã£ãŠããŸãããã€ã³ã¿ãŒèªäœãå€æŽãããã£ãã®ã§ãã ããã«ããããããããã®ã¡ãã»ãŒãžã«ã¯ããã€ãã®å©ç¹ããããŸããããã¯ããã€ã³ã¿ãŒã«ãã£ãŠå€ãååŸãããšããäžå¿
èŠãªæäœã瀺ããŸã-ã*ãã ããã§ã¯äœ¿çšãããŠããŸãããã€ãŸããåã«ãch--ããšæžãããšãã§ããŸãã
è¿œå æ¡ä»¶ while (*p1 != 0 && *p1 == _T(' '))
ç°¡åã§ã-p1ãšã¹ããŒã¹ãæ¯èŒããå Žåãæåã®ãã§ãã¯ã¯å¿
èŠãããŸããã
è¿œå æäœ m_dwInPartPos = 0; m_pcOutData = NULL; ... m_dwInPartPos = 0;
ãã®åæã§ã¯ãããŸãã if (type == eRT_unk)
C ++ã®æ倧ã®æ²ãã¿ã®1ã€ã¯ïŒå°ãªããšããæ°ããæšæºã§
åæåã¯ã©ã¹ãåºçŸãããŸã§ïŒãåæåã¯å®éã«ã¯ç¬ç«ãããšã³ãã£ãã£ã§ã¯ãªããæ°å€ã®ã»ããã§ãããšããããšã§ãã 1ã€ã®åæã«eRt_unkãããã2çªç®ã®åæã«eResourceUnknownãããã®ã§ãäž¡æ¹ãšã0ã«çããããšã幞éã§ããã
ããŠããããŠãžã£ã³ã«ã®å€å
žãªãã§ã©ãã«ïŒ==ã®ä»£ããã«= if (scheme == ZLIB_COMPRESSION) out.push(boost::iostreams::zlib_compressor()); else if (scheme = GZIP_COMPRESSION) out.push(boost::iostreams::gzip_compressor());
ãŸããç§ã¯äœãèšãããšãã§ããŸã-æããªééããèšãèš³ã¯ãããŸããã
誀æ€ç¥
é
åã®å¢çãè¶ãã
int len = lstrlen(szLogDir); TCHAR ch = szLogDir[len-1];
å®éãlenå€æ°ã¯ã> 0ãã§ã¯ãã§ãã¯ãããŸããããã³ãŒãã®ããäžã§ãszLogDiræååèªäœãévoidã§ãããã©ããããã§ãã¯ãããŸãã 2çªç®ã®ãã§ãã¯ã§ã¯ãä¿¡é Œæ§ã¯è¿œå ãããŸããã
çãããæ©èœäžå
š
ç§ã®ã³ãŒãã§ãã®ãããªéšåãèŠã€ããŸããïŒ
if (m_packets[i] != NULL) delete m_packets[i];
ç§ã®æèŠã§ã¯ããã®ãããªå Žåã®PVS-Studioã¯NULLãåé€ããŠãå®å
šã§ãããšèšã£ãŠããŸããããCppCatã¯ããã«ã€ããŠäœãèšããŸããã§ããã
ç§ã®ãããžã§ã¯ãã®çµè«99ã®èŠåã®ãã¡ãçŽ65ãã±ãŒã¹ã«å«ãŸããŠããŠããã°ã®åæ£ãšã³ãŒãã®åãªããæ¹åãã¯çŽ50/50ã§ããã
çµè«
é·æ
- ã·ã³ãã«ã
- äŸ¡æ Œ
- å®éã®ãã°ãèŠã€ããŸã
çæ
- VS2005ãšã®çµ±åã®æ¬ åŠ\ VS2008
- 誀æ€ç¥ã®ããçšåºŠã®å²å
ãã€ãã¹ãããããŸããããéããŸãïŒ
64ããããã§ãã¯ã®ãµããŒãã®æ¬ åŠã
PVS-Studioã®éçºè
ãåžžã«åœŒãã«éäžããŠããçç±ãç解ã§ããŸããã§ããã Windows x64ã§ã¯ãããã°ã©ã ã®32ããããã«ããæ©èœããããã64ãããããŒãžã§ã³ãäœæãããšããåé¡ã¯ããã©ã€ããŒãèšè¿°ããå¿
èŠãããå ŽåããŸãã¯ããã°ã©ã ã3 GBãè¶
ããRAMãå¿
èŠãšããå Žåã«æãé »ç¹ã«çºçããŸãã ç§ã®çµ±èšã§ã¯ãããã¯ãããžã§ã¯ãã®çŽ10ã15ïŒ
ã§ãã
MsBuildãªã©ãšã®çµ±åã®æ¬ åŠ
ãªããžããªã«ã³ãããããåã«ãã³ãŒããæåã§ç¢ºèªããããšã¯è«ççã«æããŸãã ãã¹ãŠã®ãã«ãã§ã¯ãªãïŒãã£ããïŒããã«ããµãŒããŒã§ã¯ãªãïŒã€ã³ã¿ã©ã¯ãã£ãã§ã¯ãããŸããïŒããã®ããã«ã ããã»ã©æéã¯ãããããååã®åã§æ¥ãããããšã¯ãããŸããã䟿å©ã§ãã
ãã©ã¹ã«ãªããããããŸããããéããŸãïŒ
èšå®ã®çŠæ¬²
CppCatã¯éåžžã«å³ããããšãå€æããŸããã ååãªæè»æ§ã¯ãããŸããããã¡ã€ã«ããã©ã«ããŒããã¡ã€ã«ã®ç¹å®ã®è¡ãã¹ãã£ã³ããé€å€ã§ããŸãã ãããããã¡ã€ã«ã®äžéšãé€å€ããæ¹æ³ã¯ïŒ ç¹å®ã®ãšã©ãŒãŸãã¯ãšã©ãŒã¯ã©ã¹ã®ãã§ãã¯ãç¡å¹ã«ããæ¹æ³ ãããŠãã°ããŒãã«ã§ã¯ãªãå Žåãããããã¡ã€ã«ã®äžéšã®ããã«ïŒ ããã¯äžå¯èœããã»ãšãã©ããã¥ã¡ã³ããèªãã§ããŸããã
ãŠã£ãã·ã¥ãªã¹ã
ããã«1
æ€èšŒããé€å€ãããèŠåã«é¢ããæ
å ±ãã³ãŒããžã®ã³ã¡ã³ãã§ã¯ãªãããªããžããªãžã®ã³ãããããé€å€ã§ããå€éšãã¡ã€ã«ã®ã©ããã«ä¿åã§ãããšäŸ¿å©ã§ãã ãã¹ãŠã®ååãåãéçåæããŒã«ã䜿çšã§ããããã§ã¯ãªããã³ãŒãå
ã®ã//-VïŒis_test_okïŒ=ïŒ501ãã®ãããªã³ãŒãã®ã³ãŒããèªãã§ããã®ç®çã«é©ããããã®ã¯é¢åã§ãã
ããã¬ã«2
èŠåã³ã³ããã¹ãã¡ãã¥ãŒã«[ã³ããŒ]ãªãã·ã§ã³ãš[Ctrl] + [V]ãããããŒãè¿œå ãããšäŸ¿å©ã§ãã ãããã®èŠåããªããžããªãžã®ã³ãããã®ã³ã¡ã³ãããã¹ãã«ã³ããŒãããšéåžžã«äŸ¿å©ã§ãã ãã¡ãããããã¥ã¡ã³ããéããŠããããã¿ã€ãã«ãã³ããŒã§ããŸã-ããããããã¹ãã¯ããã§äžè¬åãããæ€èšŒã®çµæã¯ã³ãŒãå
ã®ç¹å®ã®è¡ã瀺ããå€æ°ã®ååã¯äŸ¿å©ã§ç解ãããããã®ã§ãã
æçµçãªçµè«
CppCatã®è¯ãç¹ã¯ã賌å
¥ããŒã«ã«äŸ¡å€ããããã©ãããèšç®ããããããšã§ãã Habréã«é¢ããæè¿ã®ã¬ãã¥ãŒãããå¹³åçãªC ++ããã°ã©ãã®å¹³å絊äžãåãäžããŸãããïŒ80,000ã«ãŒãã«ïŒ$ 2,370ïŒã ã ãã圌ã®ä»äºã®1æéã¯çŽ14ãã«ããããŸãã äžèšã®ãã°ã«äŒŒããã°ãèŠã€ããŠä¿®æ£ããïŒãããŠãæ¢ããŠãããã®ãæ£ç¢ºã«ããããªãå Žåã§ãïŒäœæ¥ã¯æäœ1æéãããããšã«åæãããšæããŸãã CppCatã®è²»çšã¯250ãã«ã§ãã ããã¯17æéã®ä»äºã®ãããªãã®ã§ãã ãããžã§ã¯ãã§ãã°ä¿®æ£ã«17æé以äžè²»ããããšãèšç»ããŠããå ŽåïŒããã³èšç»ããŠãããããžã§ã¯ããå°ãªãå ŽåïŒã賌å
¥ã¯æ£åœåãããŸãã
äžè¬ã«ãå°ããªãããžã§ã¯ããšåã
ã®éçºè
ã®é¢åãèŠãŠãããCppCatã®äœè
ã«æè¬ããŸãã ãŠã£ãã·ã¥ãªã¹ãã®å®è£
ãšVS2008ãšã®çµ±åãæåŸ
ããŠããŸãã