C3688 잘못된 리터럴 접두사 'X'입니다. 리터럴 연산자 또는 리터럴 연산자 템플릿 '연산자 ""X'을(를) 찾을 수 없습니다.

비주얼 스튜디오 2008에서 2015로 마이그레이션 중 아래와 같은 에러가 있었습니다.

C3688 잘못된 리터럴 접두사 'X'입니다. 리터럴 연산자 또는 리터럴 연산자 템플릿 '연산자 ""X'을(를) 찾을 수 없습니다.
오류(활성) 사용자 정의 리터럴 연산자가 없습니다.
C2664 'int sprintf(char *const ,const char *const ,...)': 인수 2을(를) 'std::size_t'에서 'const char *const '(으)로 변환할 수 없습니다.

sprintf(sname, "Sheet"X, sheetNo++);

이런 코드에서 발생했는데 X는 아래와 같은 디파인 정의 된 놈이었습니다.

#elif _MSC_VER>=1400 // VS 2005
#define X  "%Iu"

아래와 같이 직접 수정 적용해줬습니다.

sprintf(sname, "Sheet%Iu", sheetNo++);

댓글

이 블로그의 인기 게시물

CMake Windows에 설치하기

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

크로스 스레드 작업이 잘못되었습니다. xxx 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다