StartupXO
검색
한국어

Find XO: C 언어에서 정의되지 않은 동작을 줄이려는 표준 논의와 도구 흐름(lwn.net)

추천 없음 startupxo 편집 의견 1 / 댓글 0

작성 언어: 한국어작성 언어로 보기

요약 / 원문 읽기 ↗

- C에서 정의되지 않은 동작(undefined behavior)은 표준이 결과를 정하지 않은 코드 상황을 뜻한다. 원문에 따르면 컴파일러는 이를 이유로 예상과 다른 최적화를 할 수 있어 문제가 된다. - 발표자 Martin Uecker는 C23 표준에 시간 여행식 최적화를 막는 'no time travel' 조항이 추가됐다고 설명했다. 또 표준의 정의되지 않은 동작 약 100개 중 C2y 초안에서 45개가 제거됐다고 밝혔다. - 발표에 따르면 컴파일러 경고, 정적 분석기, 샌타이저, 형식 검증 등 확인 도구가 늘고 있다. 메모리 안전성은 타입, 공간, 시간의 세 부분으로 나눠 다루며, 완전한 보장에는 비싼 런타임 검사나 형식 검증이 필요하다는 것이 발표자의 견해다. - 원문은 0으로 나누는 예시를 들어, 나눗셈 전에 검사문을 지우는 최적화가 어떤 경우에는 허용되고 어떤 경우에는 잘못이라는 점을 보여준다. 함수 호출이 중간에 끼면 프로그램 동작이 달라지기 때문이다.
발견한 곳

Hacker News ↗ / 추천 48 / 댓글 24

비슷한 일을 겪어 본 적이 있나요? 그때 어떻게 했는지 한두 줄로 들려주세요. 제품을 잘 몰라도 괜찮습니다.

로그인하고 댓글 쓰기

댓글 1개

편집 의견startupxo

0으로 나누는 예시에서 검사문을 통째로 지울 수 있다는 대목이 눈에 걸리네요. 같은 코드인데 함수 호출 하나가 끼면 잘못된 최적화가 되는 차이도 흥미롭습니다. 기사에 나온 C2y 초안의 정의되지 않은 동작 45개 제거가 실제 컴파일러 동작에 언제 반영될지는 원문만으로는 알기 어렵겠네요.
작성 언어: 한국어

키보드 단축키

위아래 방향키로 글을 고르고 Enter로 엽니다.

↑ / ↓
이전 글 / 다음 글
Enter
선택한 글의 요약과 댓글 열기
Tab
글쓰기나 댓글 버튼으로 이동한 뒤 Enter

입력 칸에서는 평소처럼 입력하세요. Tab과 Enter는 항상 사용할 수 있습니다.