본 글에서는 CLion 에서 코드를 열 단위로 선택하는 방법을 소개한다. 소스코드를 작성할 때, 코드 중 일부를 열 단위로 선택해서 편집을 하고 싶은 경우가 있다. 일반적으로, 마우스 왼쪽 버튼을 클릭한 상태에서 드래그를 하거나 Shift 키를 누른 상태에서 화살표 키를 이용하여 편집 영역을 선택하면 줄 단위로 선택이 된다. 하지만 코딩을 하다 보면 줄 단위로 선택하지 않고 열 단위로 선택하는 것이 필요할 때가 있다. CLion 에서는 다음 방법을 통해 열 단위 또는 블록 단위의 편집 영역을 선택할 수 있다. Alt + 마우스 좌클릭 상태에서 드래그 다음은 세 줄의 printf() 문을 줄 단위로 선택한 화면이다. 마우스 왼쪽 버튼을 클릭한 상태에서 드래그하거나, Shift 키를 누른 상태에서 화살표 키..
소프트웨어를 개발할 때, 소프트웨어의 동작이나 상태, 오류 등을 확인하기 위한 로그 출력 기능이 필요할 수 있다. 예를 들어, 가장 많이 사용되는 로그 출력은 printf() 함수를 이용한 화면 출력이며, 필요에 따라 파일에 저장하는 방식도 사용된다. 또한 동작 중 발생하는 이벤트의 종류나 우선순위(중요도)에 따라 로그의 레벨을 다르게 설정하고, 원하는 우선순위 이상의 로그만을 출력하는 기능도 필요할 수 있다. 본 글에서는 설정된 로그레벨 이상의 우선순위를 갖는 로그를 출력하는 함수를 구현하는 방법을 소개한다. 또한 필요에 따라 로그 출력문에 부가적인 정보를 추가하되, 매크로를 활용함으로써 함수 호출 형식 자체는 복잡하지 않게 구현하는 방법을 소개한다. 본 글에서 소개하는 로그 출력 함수는 다음과 같은 ..
장치에서 전송하거나 수신하는 네트워크 패킷을 수집하여 내용을 확인하려면 어떻게 해야 할까. 많은 사람들이 알고 있듯이 WireShark 라는 프로그램이 이러한 기능을 지원한다. 일반 컴퓨터에서는 WireShark 를 인터넷에서 다운로드하고 설치하여 사용할 수 있지만, 임베디드 환경에서는 어떻게 해야 할까. 사실 네트워크 패킷을 수집하는 기능은 pcap 이라는 라이브러리에서 지원한다. WireShark 역시 pcap 라이브러리를 기반으로 네트워크 패킷 수집 기능을 제공하고 있다. 본 글에서는 임베디드 리눅스 플랫폼 상에서 pcap 라이브러리(libpcap, 네트워크 패킷 수집 라이브러리)와 tcpdump 유틸리티(libpcap 을 이용하여 패킷을 수집하는 프로그램)를 이용하여 네트워크 패킷을 수집하는 기능..
본 글에서는 Visual studio code 에 확장 플러그인을 설치하여, 각 파일의 Hex dump 데이터를 확인하는 방법을 소개한다. 테스트 환경은 다음과 같다. PC 환경: 윈도우즈 10 프로, 인텔 64비트 Visual studio code : 1.36.1 1. Ctrl + Shift + P 키를 입력하여 커맨드 창을 연다. 2. 커맨드 창에서 "Install extensions"를 입력한 후 엔터를 입력하면 편집기 좌측에 확장기능 검색창이 활성화 된다. 3. 검색창에 "Hexdump"를 입력 후 엔터를 입력하면 "Hexdump for VScode" 라는 확장 기능이 검색된다. 4. "Install" 버튼을 클릭하면 확장 기능이 설치된다. 5. 좌측 EXPLORER 창의 원하는 파일에서 마우스 ..
본 문서는 소프트웨어 개발 시 준수해야 하는 코딩 스타일을 정의하고 가이드한다. 본 문서의 가이드는 C 언어를 대상으로 하고 있으며 C99 표준이 적용된다(추후 C11 등 최신 표준으로 변경 적용 가능하며, 이에 따라 본 문서의 내용이 일부 변경될 수 있다). 본 문서의 가이드는 구글 C++ 코딩 스타일 가이드(https://google.github.io/styleguide/cppguide.html)를 기반으로 내부적인 필요에 따라 일부 내용을 수정, 변경하여 적용한 것이다. 함수 짧은 함수 F-1. 짧고 집중된 함수를 작성한다. 함수가 40 줄을 넘어가면 프로그램의 구조를 해치지 않는 범위에서 함수를 나눌 수 있도록 노력한다. 긴 함수가 지금은 잘 동작 하더라도, 누군가 나중에 새로운 동작을 넣을 수 ..
본 문서는 소프트웨어 개발 시 준수해야 하는 코딩 스타일을 정의하고 가이드한다. 본 문서의 가이드는 C 언어를 대상으로 하고 있으며 C99 표준이 적용된다(추후 C11 등 최신 표준으로 변경 적용 가능하며, 이에 따라 본 문서의 내용이 일부 변경될 수 있다). 본 문서의 가이드는 구글 C++ 코딩 스타일 가이드(https://google.github.io/styleguide/cppguide.html)를 기반으로 내부적인 필요에 따라 일부 내용을 수정, 변경하여 적용한 것이다. 주석 주석은 코드의 가독성을 유지하는 데 매우 중요하다. 하지만 이와 별개로, 가장 좋은 주석은 코드 자체이다. 즉, 최대한 주석 없이도 코드 만으로 이해할 수 있도록 코드를 작성한다. 타입과 변수, 함수 등에 이해할 수 있는 이름..
본 문서는 소프트웨어 개발 시 준수해야 하는 코딩 스타일을 정의하고 가이드한다. 본 문서의 가이드는 C 언어를 대상으로 하고 있으며 C99 표준이 적용된다(추후 C11 등 최신 표준으로 변경 적용 가능하며, 이에 따라 본 문서의 내용이 일부 변경될 수 있다). 본 문서의 가이드는 구글 C++ 코딩 스타일 가이드(https://google.github.io/styleguide/cppguide.html)를 기반으로 내부적인 필요에 따라 일부 내용을 수정, 변경하여 적용한 것이다. 변수 범위 변수의 범위를 적절히 조절함으로써 코드의 가독성이나 성능을 높일 수 있다. 지역 변수 R-1. 함수 내 변수는 가능한 한 좁은 범위에 둔다. C99 이상에서는 함수 어디에서나 변수 선언을 할 수 있지만, 변수를 가능한 한..
본 문서는 소프트웨어 개발 시 준수해야 하는 코딩 스타일을 정의하고 가이드한다. 본 문서의 가이드는 C 언어를 대상으로 하고 있으며 C99 표준이 적용된다(추후 C11 등 최신 표준으로 변경 적용 가능하며, 이에 따라 본 문서의 내용이 일부 변경될 수 있다). 본 문서의 가이드는 구글 C++ 코딩 스타일 가이드(https://google.github.io/styleguide/cppguide.html)를 기반으로 내부적인 필요에 따라 일부 내용을 수정, 변경하여 적용한 것이다. 이름 규칙 일관성을 위해 가장 중요한 것은 이름 규칙을 따르는 것이다. 이름의 스타일을 통해 요소의 선언을 찾지 않고도 해당 요소가 타입인지, 변수인지, 함수인지, 상수인지, 혹은 매크로인지 바로 알 수 있다. 이름 규칙은 개인의 ..
Visual studio code 에서 들여쓰기(indentation) 설정하기 본 글에서는 Visual studio code에서 들여쓰기(indentation)을 설정하는 방법을 설명한다. 현재 개발에 적용하고 있는 코딩룰에서는 들여쓰기를 탭을 사용하지 않고 2개의 스페이스를 사용하도록 정의하고 있다. 이는 보통 탭 사이즈가 서로 다르게 적용된 편집기에서 코드를 읽을 때 코드의 구성이 서로 달라지는 것을 방지하기 위함이다. 보통 코드 편집기에서 엔터를 입력하여 줄바꿈을 하게 되면, 사전에 정의된 탭 사이즈에 따라 들여쓰기가 적용된다. 설정에서 탭 사이즈를 2로 설정해 두면 2칸의 들여쓰기 효과가 있으나, 이는 2개의 스페이스하고 본질적으로는 다르기 때문에 탭 사이즈가 서로 다르게 설정된 편집기마다 코드..
본 글에서는 CLion의 각 메뉴 별 단축키를 쉽게 익힐 수 있는 방법을 소개한다. CLion은 다른 IDE들과 마찬가지로 많은 메뉴를 지원하며 각 메뉴 별로 단축키를 제공한다. 사실 각 메뉴에 대한 단축키를 모르더라도 해당 단축키를 확인하는 방법은 어렵지 않다. 마우스를 이용하여 메뉴바의 각 메뉴를 확인하면 단축키가 함께 보이기 때문이다. 여기서는 Key Promoter X 라는 플러그인을 소개한다.해당 플러그인을 설치하면, 메뉴 선택 시마다 화면 우측 하단에 해당되는 단축키를 팝업으로 띄워 준다.이를 이용하면 반복을 통한 단축키 학습이 가능하다. Key Promoter X 플러그인은 JetBrain Plugins Repository 에서 다운로드 할 수 있다. 다운로드 된 플러그인 파일을 CLion에..
본 문서는 소프트웨어 개발 시 준수해야 하는 코딩 스타일을 정의하고 가이드한다. 본 문서의 가이드는 C 언어를 대상으로 하고 있으며 C99 표준이 적용된다(추후 C11 등 최신 표준으로 변경 적용 가능하며, 이에 따라 본 문서의 내용이 일부 변경될 수 있다). 본 문서의 가이드는 구글 C++ 코딩 스타일 가이드(https://google.github.io/styleguide/cppguide.html)를 기반으로 내부적인 필요에 따라 일부 내용을 수정, 변경하여 적용한 것이다. 참고로 본 스타일 가이드에 기술된 대부분의 가이드 항목은 IDE나 편집기에 설정하여 자동 적용되도록 할 수 있다. 서식 코딩 시 모두가 통일된 스타일을 사용하면 프로젝트를 파악하기 쉬워진다. 각자가 모든 서식 규칙에 동의하기 어렵고..
본 문서는 소프트웨어 개발 시 준수해야 하는 코딩 스타일을 정의하고 가이드한다. 본 문서의 가이드는 C 언어를 대상으로 하고 있으며 C99 표준이 적용된다(추후 C11 등 최신 표준으로 변경 적용 가능하며, 이에 따라 본 문서의 내용이 일부 변경될 수 있다). 본 문서의 가이드는 구글 C++ 코딩 스타일 가이드(https://google.github.io/styleguide/cppguide.html)를 기반으로 내부적인 필요에 따라 일부 내용을 수정, 변경하여 적용한 것이다. 헤더파일 헤더파일을 바르게 사용하는 것으로 코드의 가독성과 크기, 성능에 큰 차이를 만들 수 있다. #define 가드 H-1. 헤더파일이 중복 포함되는 것을 방지하기 위해, 모든 헤더파일 내에 #define 가드를 사용한다. #d..