Today
Total
Recent Posts
Recent Comments
Archives
05-19 03:21
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
반응형
관리 메뉴

UD_park's IT story

[Error] Error C2664: 'const char [26]' 'char *' 본문

IT - For Data/Error

[Error] Error C2664: 'const char [26]' 'char *'

kingllzn 2018. 6. 28. 12:18
반응형
SMALL

이번에는 string 사용에서 발생할 수 있는

에러 발생 상황에 대한 해결 방법에 대해

포스팅해보도록 하겠습니다

 

 

이번 오류는 C++과

Microsoft SQL Server 2008 R2 SP2 Express을

연동하는 연습 예제 코드 작성하다가

발생한 오류로서, string으로 문자열을 받는

상황에서 문자열이 길어져 발생했습니다

 

 

먼저 아래의 오류 표시줄의 내용부터

살펴보도록 하겠습니다

 

심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
오류 C2664 'void ProcessLogMessage(HENV,HDBC,HSTMT,char *)': 인수 4을(를) 'const char [26]'에서 'char *'(으)로 변환할 수 없습니다. DBconnectConsole c:\users\test\source\repos\0627\dbconnectconsole\dbconnectconsole\dbconnectconsole.cpp 77 

설마는 언제나 역시나 입니다

언제봐도 알아먹기 힘들게 설명을

늘어놓았기에 제 방식대로 쉽게

해석하고 풀어나가 보도록 하겠습니다

 

 

일단 Visual Studio의 오류 목록을

살펴 보도록 하겠습니다

 

프로젝트 이름에서 보이시다시피

DB와 연결하는 프로젝트 작성 중에

참고 코드 소스를 보며 공부하다 발생한

오류입니다

 

 

위의 내용을 종합적으로 오류에 대해

설명과 해석을 하자면,

char * 받기에는 변수나 인수, 그리고

문자열이 들어갑니다

 

그런데, 이 때 변수, 인수, 문자열의

메모리 공간은 맘대로 고칠 수 없는

수정이 불가능한 상수입니다

 

쉽게 말하자면 char *는 값이 있는 곳의

주소를 담아두는 그릇인데,

값을 바꿨으면 바꿨지 그 값이 있는 메모리

위치의 주소는 바뀌면 안되는 상수라서

 

상수를 담기엔 char *이란

아이는 적절하지 않다는 말로

설명이 되겠습니다

 

 

오류에 대한 설명을 쉽게 한다고

나름 생각했지만 워낙 논리적이고

이론적인 오류이다 보니 설명이 쉽지

않습니다

 

정말 아무것도 이해가 안가신다는 분들은

느낌만 이해가도록 말씀드리겠습니다

 

한마디로 '홍길동'을 입력 받고자 하는데

입력 받아 담아둘 변수 자료형에

int를 선언한 것같은 느낌이라고

생각하시면 아마 의미는 약간 다르지만

이해하는 것에는 좋을 것 같습니다

 

 

 

 

위의 오류를 해결하는 방법은

설명과 원리에 비해서 너무나 간단하기에

허무해지실 수 있습니다

 

char *라고 쓰인 모든 부분에다가

char * 앞에 const를 붙여 써주기만 하면됩니다

(const char *)

 

뭐든지 눈에 보여야 더 잘 이해가고

믿을 수 있는 법이기에 사진으로

보여 드리겠습니다

 

아래는 오류 상황일 때 모습입니다

 

 

 

위와 같은 오류에서 원인이였던

모든 char * 앞에 const를 전부 추가하여

const char *로 사용하였더니

아래와 같이 오류가 사라집니다

 

 

분명히 옛날에 소스 코딩할 때에는

이런 오류가 발생하지 않았었는데,

최근으로 업그레이드 되면서

바뀐것 같습니다

 

조금 생소한 오류 였기는 하였지만

이렇게 또 하나의 오류를 해결했습니다

이상 'const char [26]' 'char *' 오류에 대한

포스팅을 마치도록 하겠습니다

 


혹시 다른것에 대해 궁금하신게

있으시다면

댓글에 달아주세요

 

아는것이면 친절하게 쉽게

모르는것이면 또 제가 알아내서

친절하게 쉽게 포스팅해서

설명해드리겠습니다

 

 

 

 

반응형
LIST
Comments