[ MFC ] Convert _splitpath() to _splitpath_s() MFC

보안 문제로 발생하는 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() 함수와 직접적인 관계는 없다.


덧글

댓글 입력 영역



위젯 광고_구글 애드센스

통계 위젯 (화이트)

21
20
194485