반응형
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 |