보안 문제로 발생하는 Warning.
내용은 아래와 같다.
warning C4996: '_splitpath': This function or variable may be unsafe. Consider using _splitpath_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
_splitpath() 사용법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | CString strAppDir; TCHAR szFullPath[MAX_PATH]; TCHAR szDrive[_MAX_DRIVE]; TCHAR szDir[_MAX_DIR]; TCHAR szFilename[_MAX_FNAME]; TCHAR szExt[_MAX_EXT]; // Get application's full path. ::GetModuleFileName(NULL, szFullPath, MAX_PATH); _splitpath(szFullPath, szDrive, szDir, szFilename, szExt); // 출력 CString strTemp; strTemp.Format("szFullPath : %s\n", szFullPath); TRACE(strTemp); strTemp.Format("szDrive : %s\n", szDrive); TRACE(strTemp); strTemp.Format("szDir : %s\n", szDir); TRACE(strTemp); strTemp.Format("szFilename : %s\n", szFilename); TRACE(strTemp); strTemp.Format("szExt : %s\n", szExt); TRACE(strTemp); | cs |
_splitpath_s() 사용법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | CString strAppDir; TCHAR szFullPath[MAX_PATH]; TCHAR szDrive[_MAX_DRIVE]; TCHAR szDir[_MAX_DIR]; TCHAR szFilename[_MAX_FNAME]; TCHAR szExt[_MAX_EXT]; // Get application's full path. ::GetModuleFileName(NULL, szFullPath, MAX_PATH); _splitpath_s(szFullPath, szDrive, _MAX_DRIVE, szDir, _MAX_DIR, szFilename, _MAX_FNAME, szExt, _MAX_EXT); // 출력 CString strTemp; strTemp.Format("szFullPath : %s\n", szFullPath); TRACE(strTemp); strTemp.Format("szDrive : %s\n", szDrive); TRACE(strTemp); strTemp.Format("szDir : %s\n", szDir); TRACE(strTemp); strTemp.Format("szFilename : %s\n", szFilename); TRACE(strTemp); strTemp.Format("szExt : %s\n", szExt); TRACE(strTemp); | cs |
위와 같은 방식으로 _splitpath()을 _splitpath_s()로 변경하여 사용하면 해결. 출력 내용은 같다.
::GetModuleFileName()은 경로를 얻어오기 위해 사용한 함수라 _splitpath() 함수와 직접적인 관계는 없다.



덧글