본문 바로가기

모던 C 언어/사소하지만 유용한 C언어 매크로들2

2-1. C언어 스마트포인터 C언어에서 메모리 관리는 개발자를 따라다니면서 괴롭히는 문제이다. 그 중에서 할당한 메모리를 올바른 때에 회수하는 일은 숙련된 개발자라도 실수를 할 수 있다. 실수를 하지 않는다고 하더라도, 할당된 메모리를 해제하고 이로인해 댕글링 포인터 이슈가 없게 하는 것은 귀찮은 일임에 틀림없다. 이번 포스트에서는 GCC 확장 기능으로 스마트포인터를 사용하는 방법과 이를 매크로로 등록해서 편하게 활용하는 바법에 대해서 살펴보려 한다. 스마트포인터란?(C++의 스마트포인터) GCC cleanup 속성 스마트포인터 매크로로 제작 (및 경고 문구 회피) 1. 스마트포인터란?(C++의 스마트포인터) 동적할달된 메모리를 매번 해제해야 하는 불편을 회피하기 위해서 C++에는 스마트포인터를 제공한다. 스마트 포인터는 힙에 동적.. 2022. 1. 14.
1. 로그 출력 시 유용한 매크로들 (__func__, __LINE__, __FILE__, __DATE__, __TIME__) printf로 로그를 출력하다보면 로그가 좀 더 풍부했으면 좋겠다는 생각들을 종종 하게 된다. 예를 들어서 현재 어떤 파일에서 몇번째 라인에 에러가 발생했는데, 특정 모듈은 언제 빌드가 되었는지 등등을 말이다. 다음 소개하는 매크로는 로그를 더욱 풍부하게 만들어 줄 수 있는 매크로 들이다. 매크로 타입 내용 __func__ 문자열 (%s) 매크로가 호출된 함수를 출력한다. __LINE__ 정수 (%d) 매크로가 호출된 라인을 출력한다. __FILE__ 문자열 (%s) 매크로가 출력된 파일을 출력한다. (빌드한 위치 기준) __DATE__ 문자열 (%s) 빌드가 이뤄진 날짜를 출력한다. __TIME__ 문자열 (%s) 빌드가 이뤄진 시간을 출력한다. 어렵지 않은 내용이라 금방 이해할 수 있다. 아래는 위 .. 2022. 1. 3.