[C++] static 키워드 : 지역 변수, 전역, 클래스 멤버에서의 쓰임새
개요 안녕하세요. 이번 글에서는 C++의 static 키워드에 대해 알아보겠습니다. static은 쓰이는 위치에 따라 의미가 달라져서 헷갈리기 쉽습니다. 크게 함수 안의 지역 변수, 전역 변수·함수, 클래스 멤버 세 자리에서의 쓰임을 나눠서 …
개요 안녕하세요. 이번 글에서는 C++의 static 키워드에 대해 알아보겠습니다. static은 쓰이는 위치에 따라 의미가 달라져서 헷갈리기 쉽습니다. 크게 함수 안의 지역 변수, 전역 변수·함수, 클래스 멤버 세 자리에서의 쓰임을 나눠서 …
개요 안녕하세요. 이번 글에서는 C++의 const와 C++11에서 추가된 constexpr에 대해 알아보겠습니다. 둘 다 “바꾸지 않는 값”을 다루지만, const는 “바꾸지 않겠다는 약속”이고 constexpr는 “컴파일 시점에 값이 정해진다”는 점에서 다릅니다. 이 차이를 …
개요 안녕하세요. 이번 글에서는 C++11에서 추가된 enum class(범위 있는 열거형, scoped enum)에 대해 알아보겠습니다. 기존 enum은 편리하지만 이름 충돌과 의도치 않은 정수 변환이라는 약점이 있습니다. enum class는 이 두 문제를 …
개요 안녕하세요. 이번 글에서는 C++11에서 도입된 auto 키워드와 범위 기반 for문(range-based for)에 대해 알아보겠습니다. 이 둘은 함께 쓰면 반복문 코드를 훨씬 짧고 읽기 쉽게 만들어 줍니다. 특히 반복자(iterator)로 길게 쓰던 …
개요 안녕하세요. 이번 글에서는 Win32 API로 개발할 때 꼭 필요한 GetLastError와 FormatMessage에 대해 알아보겠습니다. 대부분의 Win32 함수는 실패하면 FALSE나 NULL만 돌려줄 뿐, 왜 실패했는지는 알려주지 않습니다. 그 이유는 에러 코드로 …
개요 안녕하세요. 이번 글에서는 C++11에서 도입된 이동 시맨틱(move semantics)에 대해 알아보겠습니다. 기존 C++에서는 객체를 다른 곳에 넘길 때 항상 복사가 일어났습니다. 그런데 곧 사라질 임시 객체까지 굳이 복사하는 것은 낭비입니다. …
개요 안녕하세요. 이번 글에서는 C++의 스마트 포인터(smart pointer)에 대해 알아보겠습니다. C++에서 new로 할당한 메모리는 delete로 직접 해제해야 하는데, 해제를 빠뜨리거나 중간에 예외가 발생하면 메모리 누수(memory leak)가 생깁니다. 스마트 포인터는 이런 …
개요 안녕하세요. 이번 글에서는 C, C++ 에서 구조체 분석을 할 때 자주 사용되는 함수에 대해 알아보겠습니다. offsetof와 _countof 매크로 함수는 구조체에서 특정 변수의 위치나, 배열의 개수를 얻고 싶을 때 자주 …
윈도우에는 임시 파일을 저장하는 임시 폴더가 있습니다. 프로그램이 임시로 만든 파일들을 생성하는 폴더인데 잡다한 파일들이 다 있습니다.프로그램을 개발하는 개발자 입장에서는, 프로그램에 실행 시 자주 반복되면서 시간이 오래 걸리는 것들을 임시 …
함수를 까먹어서 기록하기 위한 글입니다.어떤 문자열이 있을 때 정해진 포맷이 있다면 그 포맷에서 데이터를 추출하는 경우가 있습니다. C++인 경우엔 regex를 사용하면 정확한 문자열 검증이 가능하지만, 간단하게 사용할 수 있는 sscanf_s …