ã³ã³ãã€ã©ãšãµãŒãããŒãã£ã®éçã³ãŒãåæããŒã«ã«ã¯å
±éã®ã¿ã¹ã¯ããããŸã-å±éºãªã³ãŒããã©ã°ã¡ã³ããèå¥ããã ãã ããå®è¡ããåæã®ã¿ã€ãã«ã¯å€§ããªéãããããŸãã ã€ã³ãã«C ++ã³ã³ãã€ã©ãŒãšPVS-Studioã¢ãã©ã€ã¶ãŒã®äŸã䜿çšããŠãã¢ãããŒãã®éãã瀺ãããããã®åå ã説æããŸãã
ä»åã¯ãNotepad ++ããŒãžã§ã³5.8.2ããã¹ã察象ãšããŠæ©èœããŸãã
ã¡ã¢åž³++
ãŸããéžæãããããžã§ã¯ãã«ã€ããŠã
Notepad ++ã¯ãå€æ°ã®èšèªããµããŒãããæšæºã®Notepadã«ä»£ããç¡æã®ãœãŒã¹ã³ãŒããšãã£ã¿ãŒã§ãã Microsoft Windowsã§å®è¡ãããGPLã®äžã§ãªãªãŒã¹ãããŸãã ãããžã§ã¯ããæ°ã«å
¥ã£ãã®ã¯ãC ++ã§æžãããŠããããµã€ãºãå°ãã-73,000è¡ã®ã³ãŒãã§ãã ãããŠæãéèŠãªããšã¯ããããžã§ã¯ãèšå®ã®/ W4ã¹ã€ãããš/ WXã¹ã€ããã§ç€ºãããããã«ãããã¯ããªãæ£ç¢ºãªãããžã§ã¯ãã§ãããåèŠåããšã©ãŒãšããŠåŠçããããšã匷å¶ããŸãã
ã³ã³ãã€ã©ãŒã®éçåæ
ããã§ãã³ã³ãã€ã©ãŒãšå¥ã®å°çšããŒã«ã®èŠ³ç¹ãããããžã§ã¯ãã®åæãæ€èšããŸãã ã³ã³ãã€ã©ã¯åžžã«ãéåžžã«å°ããªããŒã«ã«ã³ãŒããã©ã°ã¡ã³ãã®ã¿ãåŠçããããšã§çºè¡ã§ããèŠåã«åŒãå¯ããããŸãã ãã®èšå®ã¯ãã³ã³ãã€ã©ã«èª²ããããéåžžã«å³ããããã©ãŒãã³ã¹èŠä»¶ã«ãããã®ã§ãã åæ£ãããžã§ã¯ãã¢ã»ã³ããªçšã®ããŒã«ãããããšã¯å¶ç¶ã§ã¯ãããŸããã äžèŠæš¡ããã³å€§èŠæš¡ãããžã§ã¯ãã®ã³ã³ãã€ã«æéã¯ãéçºæ¹æ³ã®éžæã«åœ±é¿ãäžããéèŠãªèŠå ã§ãã ãããã£ãŠãã³ã³ãã€ã©ãŒãã5ïŒ
ã®ããã©ãŒãã³ã¹åäžãå®çŸã§ããå Žåããããå®è£
ãããŸãã
ãã®ãããªæé©åã«ãããã³ã³ãã€ã©ãŒã¯ããã¢ããªã·ãã¯ã«ãªããå®éãååŠçã
ASTã®æ§ç¯ãã³ãŒãã®çæãªã©ã®æ®µéãæ確ã«åºå¥ãããªããªããŸãã ããšãã°ãéæ¥çãªèšŒæ ãããVisual C ++ã䜿çšããŠããªããã»ã¹ããã "* .i"ãã¡ã€ã«ãã³ã³ãã€ã«ããã³çæããããªããã»ããµã¢ã«ãŽãªãºã ãç°ãªããšäž»åŒµã§ããŸãã ãŸããã³ã³ãã€ã©ã¯ASTããªãŒå
šäœãä¿åããå¿
èŠããªããæ害ã§ãããããŸããã ç¹å®ã®ããŒãã®ã³ãŒããçæããããããã®ããŒããããå€ãã®ããŒããäžèŠã«ãªããšããã«ããããã¯ããã«ç Žæ£ãããŸãã ã³ã³ãã€ã«äžã«ãASTããŸã£ããååšããªãå ŽåããããŸãã ããã¯å¿
èŠãããŸããã çæãããã³ãŒãã®äžéšã解äœããŸããã ããã«ããã䜿çšãããã¡ã¢ãªãšãã£ãã·ã¥ã®éãç¯çŽããããããé床ãåäžããŸãã
ãã®ã¢ãããŒãã®çµæã¯ãèŠåã®ãå±ææ§ãã§ãã ã³ã³ãã€ã©ã¯ãé«ã¬ãã«ã®ãšã©ãŒã®æ€åºã«åœ¹ç«ã€ããŸããŸãªæ§é ãæå³çã«ä¿åããŸãã å®éã«ãIntel C ++ãNotepad ++ãããžã§ã¯ãã«å¯ŸããŠçæããããŒã«ã«èŠåã確èªããŠã¿ãŸãããã ã¡ã¢åž³++ãããžã§ã¯ãã¯ã/ W4ã¹ã€ããã䜿çšããŠèŠåãªãã§Visual C ++ã³ã³ãã€ã©ãŒã«ãã£ãŠã³ã³ãã€ã«ãããããšãæãåºããŠãã ããã åœç¶ãIntel C ++ã³ã³ãã€ã©ã«ã¯ç°ãªãèŠåã»ããããããç¹å®ã®ã¹ã€ãã/ W5 [Intel C ++]ãèšå®ããŸãã ããã«ãIntel C ++ã³ã³ãã€ã©ããåèããšåŒã¶ãã®ãèŠãŠãããŸãã
ã€ã³ãã«C ++ããåä¿¡ããã¡ãã»ãŒãžã®çš®é¡ãèŠãŠã¿ãŸãããã ãã®ãããCharUpperé¢æ°ãæäœããŠãããšãã«ãåãã¿ã€ãã®4ã€ã®ãšã©ãŒãèŠã€ããŸããïŒèšäºã®æåŸã®æ³šãåç
§ïŒã ãã®ãšã©ãŒã蚺æãããå±ææ§ãã«æ³šæããŠãã ãã-éåžžã«å±éºãªåå€æãçºèŠããŸããã 察å¿ããã³ãŒããã©ã°ã¡ã³ããèããŸãã
wchar_t * destStr = new wchar_t [len + 1];
...
forïŒint j = 0; j <nbChar; j ++ïŒ
{
ifïŒã±ãŒã¹==倧æåïŒ
destStr [j] =
ïŒwchar_tïŒ:: CharUpperWïŒïŒLPWSTRïŒdestStr [j]ïŒ;
ä»ã«
destStr [j] =
ïŒwchar_tïŒ:: CharLowerWïŒïŒLPWSTRïŒdestStr [j]ïŒ;
}
å¥åŠãªåå€æããããŸãã Intel C ++ã³ã³ãã€ã©ã¯ããïŒ810ïŒconversion fromãLPWSTR = {WCHAR = {__ wchar_t} *}ãtoã__wchar_tãéèŠãªãããã倱ãå¯èœæ§ããããŸãããšå ±åããŸãã CharUpperé¢æ°ã®ãããã¿ã€ããèŠãŠã¿ãŸãããã
LPTSTR WINAPI CharUpperïŒ
__inout LPTSTR lpsz
ïŒ;
ãã®é¢æ°ã¯ãåã
ã®æåã§ã¯ãªããæååã§æ©èœããŸãã ããã§ãã·ã³ãã«ã¯ãã€ã³ã¿ã«å€æããããã®ãã€ã³ã¿ã«ããç¹å®ã®ã¡ã¢ãªé åãå€æŽãããŸãã ãã©ãŒ
ããããçå®ã¯ãã€ã³ãã«C ++ã«ãã£ãŠçºèŠãããææã¯ããããããã§çµãããšããããšã§ãã ãã以å€ã®ãã¹ãŠã¯ããšã©ãŒãåŒãèµ·ããã³ãŒããããã¯ããã«éå±ã§ãããããªã³ãŒãã§ããå¯èœæ§ãé«ããªããŸãã ãããããŸã ããã€ãã®ä»ã®èŠåãèæ
®ããŠãã ããã
å€æ°ã®ã¡ãã»ãŒãžïŒ1125ãçºè¡ãããŸããã
ãïŒ1125ïŒé¢æ°ããŠã£ã³ããŠ:: initïŒHINSTANCEãHWNDïŒãé衚瀺ãTabBarPlus :: init "-ä»®æ³é¢æ°ã®ãªãŒããŒã©ã€ããæå³ïŒ"
ãããã¯ãšã©ãŒã§ã¯ãªããé¢æ°ã®åœåã«å€±æããŸããã ç§ãã¡ã¯ä»ã®äººãžã®ãã®ã¡ãã»ãŒãžã«èå³ãæã£ãŠããŸãã æ€èšŒã«ã¯ããã€ãã®ã¯ã©ã¹ãé¢ä¿ããŠããããã§ãããããã«ã¯ç¹å¥ãªããŒã¿ã¯ä¿åãããŸããã ã³ã³ãã€ã©ã¯åºæ¬ã¯ã©ã¹ã«é¢ããããŸããŸãªæ
å ±ãä¿åããå¿
èŠããããŸãã ãã®ããããã®èšºæãå®è£
ãããŠããŸãã
次ã®äŸã ã¡ãã»ãŒãžãïŒ186ïŒç¬Šå·ãªãæŽæ°ãšãŒãã®ç¡æå³ãªæ¯èŒãã¯ãç¡æå³ãªæ¯èŒã«å¯ŸããŠçºè¡ãããŸãã
static LRESULT CALLBACK hookProcMouseïŒ
UINT nCodeãWPARAM wParamãLPARAM lParamïŒ
{
ifïŒnCode <0ïŒ
{
...
0ãè¿ããŸãã
}
...
}
æ¡ä»¶ãnCode <0ãã¯åžžã«falseã§ãã è¯ãããŒã«ã«èšºæã®è¯ãäŸã ãããã£ãŠããšã©ãŒãæ€åºããããšã¯ããªãå¯èœã§ãã
ææ°ã®Intel C ++èŠåãèæ
®ããã°ååã§ãã ãå°åæ§ãã®èãæ¹ã¯ãã§ã«æ確ã ãšæããŸãã
void ScintillaKeyMap :: showCurrentSettingsïŒïŒ{
int i = :: SendDlgItemMessageïŒ...ïŒ;
...
forïŒsize_t i = 0; i <nrKeys; i ++ïŒ
{
...
}
}
ããã§ããééãã¯ãããŸãããå€æ°ã®åœåãããŸãããŸããã£ãŠããŸããã æåã¯ãå€æ°ãiãã®ã¿ã€ãã¯ãintãã§ãã 次ã«ããsize_tãã¿ã€ãã®æ°ããå€æ°ãiãããforïŒïŒãã¹ããŒãã¡ã³ãã§å®£èšãããä»ã®ç®çã«äœ¿çšãããŸãã "size_t i"ã®å®£èšæã®ã³ã³ãã€ã©ã¯ãåãååã®å€æ°ãæ¢ã«ååšããããšãç¥ã£ãŠãããèŠåãçºè¡ããŸãã ç¹°ãè¿ããŸãããããã¯ã³ã³ãã€ã©ãè¿œå ã®ããŒã¿ãä¿åããå¿
èŠã¯ãããŸããã§ããã 圌ã¯ãŸã ãé¢æ°ã®æ¬äœã®çµãããŸã§ãå€æ°ãint iããå©çšå¯èœã§ããããšãèŠããŠããå¿
èŠããããŸãã
å€éšéçã³ãŒãã¢ãã©ã€ã¶ãŒ
éçã³ãŒãåæã®ããã®å°çšããŒã«ã«ç§»ããŸãããã èµ·åã®é »åºŠã¯ã³ã³ãã€ã©ã®é »åºŠãããæ¡éãã«äœãããããããã®å³å¯ãªé床å¶éã¯ãªããªããŸããã 圌ãã®ä»äºã®é床ã¯ãã³ãŒããã³ã³ãã€ã«ããããã10åé
ããããããŸããã ããã¯éèŠã§ã¯ãããŸããã ããšãã°ãããã°ã©ãã¯æ¥äžã«ã³ã³ãã€ã©ãæäœããŸãã å€éã«éçã³ãŒãã¢ãã©ã€ã¶ãŒãèµ·åããååäžã«ããã°ã©ããŒã¯çãããå Žæã®ã¬ããŒããåãåããŸãã ããªãåççãªã¢ãããŒãã
é床ãèœãšãããšã§ãéçã³ãŒãåæããŒã«ã¯ã³ãŒãããªãŒå
šäœãä¿åãããããæ°å調ã¹ãå€ãã®è¿œå æ
å ±ãä¿åã§ããŸãã ããã«ãããããŒããããé«ã¬ãã«ã®ãšã©ãŒãèŠã€ããããšãã§ããŸãã
PVS-Studioéçã¢ãã©ã€ã¶ãŒã«ãã£ãŠãNotepad ++ã§äœãé¢çœãããèŠãŠã¿ãŸãããã ç§ã¯å®éšçã䜿çšããŠããããšã«æ³šæããŠãã ãããããã¯ãŸã ããŠã³ããŒãã§ããŸããã PVS-StudioããŒãžã§ã³4.00ã§ã¯ãäžè¬çãªã«ãŒã«ã®ç¡æã»ããã1ã2ãæã§çŽ¹ä»ããŸãã
åœç¶ãIntel C ++ã¢ãã©ã€ã¶ãŒãšåæ§ã«ãPVS-Studioã¯ãããŒã«ã«ããšã©ãŒã«èµ·å ãããšã©ãŒãæ€åºããŸãã æåã®äŸïŒ
bool _isPointXValid;
bool _isPointYValid;
bool isPointValidïŒïŒ{
return _isPointXValid && _isPointXValid;
};
PVS-Studioã¢ãã©ã€ã¶ãŒã¯ããV501ïŒã&&ãæŒç®åã®å·Šå³ã«åãå¯æ¬¡åŒããããŸãïŒ_isPointXValid && _isPointXValidãã
ãšã©ãŒã®æ¬è³ªã¯æããã ãšæããŸããããã以äžè©³ããã¯èª¬æããŸããã 蚺æã¯ãããŒã«ã«ãã§ããåäžã®åŒãåæããããã»ã¹ã§æ€èšŒãå®è¡ã§ããããã§ãã
_iContMapé
åã®ã¯ãªã¢ãäžå®å
šã«ãªãå¥ã®ããŒã«ã«ãšã©ãŒïŒ
#define CONT_MAP_MAX 50
int _iContMap [CONT_MAP_MAX];
...
DockingManager :: DockingManagerïŒïŒ
{
...
memsetïŒ_iContMapã-1ãCONT_MAP_MAXïŒ;
...
}
ãV512ïŒmemseté¢æ°ãåŒã³åºããšããããã¡ãªãŒããŒãããŒãŸãã¯ã¢ã³ããŒãããŒãçºçããããšããèŠåãçºè¡ãããŸãã ã³ãŒãã®æ£ããããŒãžã§ã³ïŒ
memsetïŒ_iContMapã-1ãCONT_MAP_MAX * sizeofïŒintïŒïŒ;
ããã§ã¯ããã£ãšèå³æ·±ãããšã«ç§»ããŸãããã äœããééã£ãŠãããšçãããããã«ããããã«ã2ã€ã®ãã©ã³ããåæã«åæããå¿
èŠãããã³ãŒãïŒ
void TabBarPlus :: drawItemïŒ
DRAWITEMSTRUCT * pDrawItemStructïŒ
{
...
ifïŒïŒ_isVerticalïŒ
ãã©ã°| = DT_BOTTOM;
ä»ã«
ãã©ã°| = DT_BOTTOM;
...
}
PVS-Studioã®ã¬ããŒãïŒãV523ïŒãthenãã¹ããŒãã¡ã³ãã¯ãelseãã¹ããŒãã¡ã³ããšåçã§ããã è¿æã®ã³ãŒããèŠããšãå®éã«ã¯èè
ã次ã®ããã«æžãããã£ããšçµè«ä»ããããšãã§ããŸãã
ifïŒïŒ_isVerticalïŒ
ãã©ã°| = DT_VCENTER;
ä»ã«
ãã©ã°| = DT_BOTTOM;
ãããåæ°ãåºããŠãã ããã 次ã®ã³ãŒããã©ã°ã¡ã³ãã®åœ¢åŒã§ãã¹ããããŸãã
void KeyWordsStyleDialog :: updateDlgïŒïŒ
{
...
ã¹ã¿ã€ã«ïŒw1Style =
_pUserLang-> _ styleArray.getStylerïŒSTYLE_WORD1_INDEXïŒ;
styleUpdateïŒw1Styleã_pFgColour [0]ã_ pBgColour [0]ã
IDC_KEYWORD1_FONT_COMBOãIDC_KEYWORD1_FONTSIZE_COMBOã
IDC_KEYWORD1_BOLD_CHECKãIDC_KEYWORD1_ITALIC_CHECKã
IDC_KEYWORD1_UNDERLINE_CHECKïŒ;
ã¹ã¿ã€ã«ïŒw2Style =
_pUserLang-> _ styleArray.getStylerïŒSTYLE_WORD2_INDEXïŒ;
styleUpdateïŒw2Styleã_pFgColour [1]ã_ pBgColour [1]ã
IDC_KEYWORD2_FONT_COMBOãIDC_KEYWORD2_FONTSIZE_COMBOã
IDC_KEYWORD2_BOLD_CHECKãIDC_KEYWORD2_ITALIC_CHECKã
IDC_KEYWORD2_UNDERLINE_CHECKïŒ;
ã¹ã¿ã€ã«ïŒw3Style =
_pUserLang-> _ styleArray.getStylerïŒSTYLE_WORD3_INDEXïŒ;
styleUpdateïŒw3Styleã_pFgColour [2]ã_ pBgColour [2]ã
IDC_KEYWORD3_FONT_COMBOãIDC_KEYWORD3_FONTSIZE_COMBOã
IDC_KEYWORD3_BOLD_CHECKãIDC_KEYWORD3_BOLD_CHECKã
IDC_KEYWORD3_UNDERLINE_CHECKïŒ;
ã¹ã¿ã€ã«ïŒw4Style =
_pUserLang-> _ styleArray.getStylerïŒSTYLE_WORD4_INDEXïŒ;
styleUpdateïŒw4Styleã_pFgColour [3]ã_ pBgColour [3]ã
IDC_KEYWORD4_FONT_COMBOãIDC_KEYWORD4_FONTSIZE_COMBOã
IDC_KEYWORD4_BOLD_CHECKãIDC_KEYWORD4_ITALIC_CHECKã
IDC_KEYWORD4_UNDERLINE_CHECKïŒ;
...
}
ããã§ãšã©ãŒãèŠã€ããå¯èœæ§ã®ããPVS-Studioã¢ãã©ã€ã¶ãŒãèªãã«æã£ãŠãããšèšããŸãã ç§ã¯ããªããããã«æ°ã¥ãããšã¯ãŸããªããšæããã³ãŒãæçå
šäœãã¹ãããããŠã説æãåŸ
ã£ãŠããŸãã ãã®ãããªã³ãŒããã¬ãã¥ãŒããããšã¯äºå®äžäžå¯èœã§ãïŒã³ãŒãã¬ãã¥ãŒïŒã ããããéçã¢ãã©ã€ã¶ãŒã¯å¿è匷ããŠã€ãŸããªããã®ã§ãããV525ïŒåæ§ã®ãããã¯ã®ã³ã¬ã¯ã·ã§ã³ãå«ãã³ãŒãã è¡576ã580ã584ã588ã®é
ç®ã7ããã7ããã6ããã7ãã確èªããŸãã
ããã¹ããçãããŠãèå³æ·±ãããšã匷調ããŸãã
styleUpdateïŒ...
IDC_KEYWORD1_BOLD_CHECKãIDC_KEYWORD1_ITALIC_CHECKã
...ïŒ;
styleUpdateïŒ...
IDC_KEYWORD2_BOLD_CHECKãIDC_KEYWORD2_ITALIC_CHECKã
...ïŒ;
styleUpdateïŒ...
IDC_KEYWORD3_BOLD_CHECKã!! IDC_KEYWORD3_BOLD_CHECK !!ã
...ïŒ;
styleUpdateïŒ...
IDC_KEYWORD4_BOLD_CHECKãIDC_KEYWORD4_ITALIC_CHECKã
ã³ãŒãã¯ã»ãšãã©ã®å ŽåãCopy-Pasteã«ãã£ãŠäœæãããŸããã ãã®çµæãIDC_KEYWORD3_ITALIC_CHECKã®ä»£ããã«IDC_KEYWORD3_BOLD_CHECKã䜿çšãããŸããã èŠåã¯å°ãå¥åŠã«èŠããæ°åã7ããã7ããã6ããã7ãã«ã€ããŠè©±ããŸãã æ®å¿µãªãããããç解ããããã¡ãã»ãŒãžãäŒããããšã¯å°é£ã§ãã ãããã®çªå·ã¯ã次ã®åœ¢åŒã®ãã¯ãããååŸãããŸãã
#define IDC_KEYWORD1_ITALIC_CHECKïŒIDC_KEYWORD1 + 7ïŒ
#define IDC_KEYWORD3_BOLD_CHECKïŒIDC_KEYWORD3 + 6ïŒ
æåŸã«æããäŸã¯ãPVS-Studioã¢ãã©ã€ã¶ãŒãã³ãŒãã®å€§ããªã»ã¯ã·ã§ã³å
šäœãåæã«åŠçãããã®äžã®ç¹°ãè¿ãæ§é ãæ€åºãããã¥ãŒãªã¹ãã£ãã¯ã«åºã¥ããŠäœããééã£ãŠãããšçãããšãã§ãããšããäºå®ã瀺ããŠããŸãã ããã¯ãæ
å ±åŠçã¬ãã«ã®éåžžã«å€§ããªéãã§ãã
ããã€ãã®æ°å
ã³ã³ãã€ã©ãŒã®ãããŒã«ã«ãåæã®ãã1ã€ã®çµæãšãå°çšããŒã«ã§ã®ããã°ããŒãã«ãªåæã«ã€ããŠèª¬æããŸãããã ãããŒã«ã«åæãã§ã¯ããã®ç¶æ³ãæ¬åœã«å±éºãã©ãããæ確ã«ããããšã¯å°é£ã§ãã çµæãšããŠãæ¡éãã«å€ãã®èª€æ€ç¥ãçºçããŸãã äŸã§èª¬æããŸãã
Notepad ++ãããžã§ã¯ããåæãããšããPVS-StudioããŒã«ã¯10åã®èŠåã®ã¿ãçºè¡ããŸããã ãããã®ãã¡ã4ã€ã®ã¡ãã»ãŒãžã¯å®éã®ãšã©ãŒã瀺ããŠããŸãã çµæã¯æ§ããã§ãããPVS-Studioã®æ±çšéç解æã¯éçºãå§ãŸã£ãã°ããã§ãã æéãçµã€ã«ã€ããŠã圌ã¯æé«ã®äžäººã«ãªããŸãã
Notepad ++ãããžã§ã¯ããåæãããšãIntel C ++ã³ã³ãã€ã©ãŒã¯439ã®èŠåãš3,139ã®ã³ã¡ã³ããçæããŸããã ã©ãã ãã®äººãå®éã®ééããæ¬åœã«ææããŠãããã¯ããããŸããã ç§ãèŠãã®ã«ååãªåŒ·ããããCharUpperã«é¢é£ããå®éã®ãšã©ãŒã¯4ã€ããèŠãããŸããã§ããïŒäžèšã®èª¬æãåç
§ïŒã
3578ã®ã¡ãã»ãŒãžã¯å€ãããŠãããããã泚ææ·±ã調ã¹ãããšã¯ã§ããŸããã ã³ã³ãã€ã©ãŒã¯ãããã°ã©ã ã®20è¡ããšã«æ³šæãæãããšãææ¡ããŠããããšãããããŸããïŒ73000/3578 = 20ïŒã ããã¯æ·±å»ã§ã¯ãããŸããã æ±çšã¢ãã©ã€ã¶ãŒã®å Žåã¯ãå¯èœã§ããã°ãäžèŠãªãã®ããã¹ãŠé®æããŠãã ããã
Viva64ã«ãŒã«ã»ããïŒPVS-Studioã«å«ãŸããïŒãè©ŠããŠã¿ã人ã¯ããããåãèšå€§ãªå²åã®èª€
æ€ç¥ãçæããããšã«æ°ä»ããããããŸããã ããããå¥ã®ç¶æ³ããããŸãã ããã§ããã¹ãŠã®çãããã¿ã€ãã®å€æãèå¥ã§ããå¿
èŠããããŸãã 誀ã£ãã¡ãã»ãŒãžãçæããªããããããšã©ãŒãèŠéããªãããšãéèŠã§ãã ããã«ãèšå®ã䜿çšããŠèª€ã£ãã¡ãã»ãŒãžãé©åã«ãã£ã«ã¿ãªã³ã°ããŸãã
-æŽæ°ïŒ
ããã«åãæžããããšãããããŸããã CharUpperWã®äŸã§ã¯ããšã©ãŒã¯ãããŸããã æ®å¿µãªããã誰ãç§ãä¿®æ£ããŸããã§ããã ãµã ã¯ãPVS-Studioã§åæ§ã®ã«ãŒã«ãå®è£
ããããšã«æ±ºãããšãã«æ°ä»ããŸããã
å®éã
CharUpperWã¯æååãšåã
ã®æåã®äž¡æ¹ã§
åäœããããšãã§ããŸãã ãã€ã³ã¿ãŒã®äžéšããŒãã®å Žåãããã¯ãã€ã³ã¿ãŒã§ã¯ãªããã·ã³ãã«ã§ãããšèŠãªãããŸãã ãã®ã³ãŒã¹ã§ã®WIN APIã¯ãã®æ²çã«ãã£ãŠæ²ããŸããŸããããã¡ã¢åž³++ã®ã³ãŒãã¯æ£ããäœæãããŸããã
ãšããã§ãIntel C ++ã¯ãšã©ãŒããŸã£ããèŠã€ããããªãã£ãããšãããããŸããã