티스토리 뷰
안녕하세요.
요즘 업무때문에 언어를 여러가지 섞어서 보고 있는데
한 함수 때문에 경고가 떠서 경고가 200개가 넘게 뜨더라고요;;
(인수인계자님?)
에러는 아니지만 너무 신경쓰여서 고쳐볼까합니다.
에러 내용
sprintf is deprecated
원인
- C 언어쪽에서 사용하는 명령어 같은데 이게 이제 없어졌다고 합니다.
해결법
- snprintf로 바꿔주시면 됩니다.
- 예를들면 아래 같이 사용하셨다면
sprintf(a,"%s is good",b);
- 간단한 경우에는 이렇게 두가지로 바꿀 수 있습니다.
snprintf(a,sizeof(a),"%s is good",b);
혹은
snprintf(a,strlen(a),"%s is good",b);
* 근데 이렇게 바꾸실때 만약 a 의 크기가 너무 작으면 데이터 오버플로우가 발생하더라고요...
그럼 사이즈를 좀더 안전하게 할수있는 방법은 없을까요?
*중요*
그래서 난 더 안전하게 하고 싶다 하시는 분들은 미리 크기를 구하시는걸 권장 드립니다.
참고로 snprintf 의 리턴값이 바로 저희가 원하는 크기이니까 이 점을 이용해 구해줍시다.
예를들면
int size = snprintf(NULL,0,"%s is good",b) + 1;
// 뒤의 1의 경우 저는 넉넉히 두고싶어서 설정한 겁니다.
snprintf(a,size,"%s is good",b);
후 이거 하나 고쳤는데 경고가 절반이 사라졌네요
아무래도 Obj-C랑 C 랑 섞어서 사용하시다보니
이런 일이 일어난 것 같네요.
중요한건 아니지만
신경쓰이는 분들을 위해 올려봅니다.
오늘도 파이팅입니다.
'기타 개발 > Objective C (iOS)' 카테고리의 다른 글
Objective C 로 그림판 만들었던 것(GitHub) (0) | 2022.12.09 |
---|---|
Objective-C Timer 만들기 연습 (0) | 2022.12.09 |
댓글