본문 바로가기
반응형

코딩/C언어3

[C, C++/Visual Studio 2019] C6385 오류 해결 방법 프로그래밍 과제를 디버깅 하던 와중, 아래와 같은 오류가 떴다. 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 경고 C6385 'list[i]'에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 '16'바이트인데 실제로는 '-4'바이트만 읽을 수 있습니다. 알아보니, 배열의 인덱스값이 정해진 범위를 벗어나서 생기는 오류라고 한다. 오류와 관련한 공식문서(https://docs.microsoft.com/ko-kr/cpp/code-quality/c6385?view=msvc-160&viewFallbackFrom=vs-2019)를 살펴보면 버퍼의 읽기 가능한 범위는 버퍼에서 읽는 데 사용되는 인덱스보다 작을 수 있습니다. 유효한 범위를 벗어난 데이터를 읽으려고 시도하면 버퍼 .. 2021. 9. 25.
C언어 오개념 %lf에 대하여 scanf할 때는 float는 %f, double는 %lf 로 해야하지만 printf할 때는 float, double 모두 %f로 하면 된다. gigglehd.com/zbxe/10649472 기글 하드웨어 소프트 포럼 - [뻘글] 헷갈리기 쉬운 C언어 오개념 %f, %lf 댓글의 닉넴과 레벨은 가립니다. %f와 %lf 얘기가 나오는데 본래 scanf에는 2개가 존재했지만, printf는 1개가 존재하다가 C언어 99년도 표준(C99)에서 %lf가 추가 됐습니다. 사실 printf에서는 %f와 %lf는 gigglehd.com 친구가 비주얼 C에서 프린트할 때 %lf 로 쓰니까 주의(초록색 밑줄)뜬다고 책 찾아봐도 없다고 해서 찾아본 내용 2021. 4. 5.
C언어, 배열의 크기를 변수로 선언이 가능한가? (with C99) C언어를 공부하다보니 N개의 정수를 입력받아 처리를 하라는 문제를 풀게 되었다. 정렬을 해야했기 때문에 리스트를 사용해야 했는데, 리스트의 크기를 선언할 때 변수로 선언이 되는지 궁금했다. 찾아보니까 된다고 한다. 그런데 몇 가지 조건이 있다. 배열의 크기를 변수로 선언하는 것은 C99이라는 최신 표준안부터 지원하는 기능이다. 여기서 C99은 ANSI에서 제정한 표준안으로 99년도에 제정된 '최신' 표준안이다. 99년도인데 최신이란다.. 여기서 더 놀라운 것은 20년 넘게 지난 표준안이 아직도 적용되지 않은 컴파일러들이 있다는 것이다. 대표적으로 마이크로소프트의 Visual Studio는 표준을 지키고 있지 않다. 그래서 배열의 크기를 변수로 선언하게 되면 오류가 발생하게 된다. ​ 내가 쓰는 dev C.. 2021. 1. 31.
반응형