본문 바로가기

C/개념

"const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. - 에러 수정

반응형
SMALL

C 언어 공부 중 만난 에러입니다.

 

기본적으로 C 언어에선 포인터 개념을 사용합니다. 문자열에서도 이와 같은 개념을 똑같이 적용할 수 있는데, 분명 책에선 잘 된다고 되어있는데, 작동을 했을 때 에러가 발생해서 그 해결법을 적어보려 합니다.

 

문제의 코드입니다.

#include <stdio.h>

int main(void) {
	char* str = "안녕";
    printf("%s", str);
}

간단하죠? 되게 간단한데 str 포인터가 "안녕"이라는 상수를 가리킬 수가 없습니다. str과 "안녕"의 형식이 달라서 발생하는 오류입니다.

 

해결방법은 2가지가 있습니다.

1. str을 const로 바꾼다.

#include <stdio.h>

int main(void) {
	const char* str = "안녕";
    printf("%s", str);
}

위와 같이 한다면 해결할 수 있습니다만, 제가 str이라는 포인터를 조작할 수 없으니 다른 방법도 알려드리자면

 

2. visual studio의 설정을 바꾼다.

두 번째 방법은 visual studio의 설정을 바꾸는 것입니다.

 

프로젝트(P) > 속성(P) > C/C++ > 언어 > 준수 모드 > 아니요

 

아마 저와 같이 2017 이상의 visual studio를 쓴다면 준수 모드가 예로 되어 있을 것입니다. 이를 아니요로 바꾸면 해결됩니다.

 

준수 모드가 무엇인지는 모르겠는데, 아마 시험을 치러 갈 때, 시험장 환경의 visual studio 버전을 확인해야하는 이유가 늘었습니다.


이상 "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. - 에러 수정 였습니다. ^_^

반응형
LIST

'C > 개념' 카테고리의 다른 글

scanf의 맹점 (2) / 입출력 속도  (0) 2019.12.12
scanf의 맹점 / 입력 버퍼  (0) 2019.12.10
Hash 구현  (0) 2019.08.18
Hash 알고리즘  (0) 2019.08.10
C언어의 메모리 동적 할당  (0) 2019.06.23