프로그래밍 17

c언어/c++ sizeof

안녕하세요 업글입니다. 이번에는 sizeof 연산자에 대해서 포스팅해보겠습니다. sizeof 연산자는 바이트 단위로 크기를 반환해주는 연산자입니다. 예를 들어서 32bit 시스템에서 sizeof(int)는 4를 반환하게 됩니다. sizeof가 전처리기에서 치환되는지 컴파일 타임에 치환되는지 런타임에 치환되는지 정확히 모르시고 착각하시는 분들이 간혹 있으신 거 같습니다. 결론부터 말씀드리자면 sizeof 연산자는 컴파일 시간에 치환되게 됩니다. sizeof가 런타임에 치환되는지 착각하고 sizeof 중복을 줄이기 위해 아래의 예제와 같이 사용하는 경우를 봤었습니다. 예제. #define COUNT_OF(arr) (sizeof(arr)/sizeof(arr[0])) int main() { int arr[10]..

프로그래밍 2020.11.12

쓰레드(Thread)에 대한 생각

안녕하세요 업글입니다. 이번에는 Thread에 대해서 포스팅 해보겠습니다. Thread에 대한 기본적인 내용을 모르시는 분은 구글링을 통해서 이해하신 후 읽으시는 것을 추천드립니다. 많은 분들이 아시는 것처럼 Thread란 프로그램 내에서 실행되는 최소 단위입니다. 프로그램은 최소 1개 이상의 Thread로 구성됩니다. 이번 포스팅에서는 멀티 Thread에 대한 생각을 중점적으로 다루어보고자 합니다. 멀티 Thread를 사용하면 좋을까 안좋을까에 대해서 어떻게 생각하시나요. 제가 생각하는 멀티 Thread의 장단점은 아래와 같습니다. 멀티 Thread의 장점은 병렬처리가 가능하다. 멀티 Thread의 단점은 구현이 복잡해지고 디버깅이 어렵다. 특히나 멀티 Thread를 사용하는 경우 동기화 즉, 공유메모..

프로그래밍 2020.11.12

c언어/c++ int 크기

안녕하세요 업글입니다. 이번에는 c언어에서 int 크기에 대해서 포스팅 해보겠습니다. 신입사원 시절 선배가 int의 크기가 몇이냐고 물어봤을 때 고민없이 4라고 대답한 적이 있었습니다. 이 때, stm32계열의 mcu를 사용하고 있었으므로 sizeof(int)를 했을 때 4로 출력이 되었고 stm32 mcu에서 int의 크기는 4가 맞았었습니다. 지금 시점에서 제가 생각하는 적절한 대답은 "시스템에 따라서 달라진다. 예를 들어서 32bit시스템에서는 4바이트이다" 입니다. 간혹 OS에 따라서 달라진다라고 대답하는 사람들이 있습니다. 이 대답도 틀린말은 아니지만 OS가 탑재되지 않은 CPU도 있기 때문에 완전히 맞다고 볼수는 없을 것 같습니다. int가 시스템에 따라 다른 이유는 int는 CPU에서는 wo..

프로그래밍 2020.11.11

c언어/c++ const

안녕하세요 업글입니다. c언어 const에 대한 팁을 공유드립니다. const 키워드는 상수로 선언하는 키워드입니다. 예제. const int a = 5; a = 3; // 컴파일러 에러 위의 예제에서 보는 것처럼 const 키워드 사용 시 상수로 선언되기 때문에 선언 이후에 값을 변화시키려고 하는 경우 컴파일러에서 에러가 나기 때문에 변화 시킬 수 없습니다.const에 대한 간단한 내용은 여기까지입니다. const 키워드는 함수의 인자로 유용하게 사용할 수 있습니다.함수 내부에서 함수의 인자 값을 읽어서 사용하기만 하고 변화되지 않는 경우 유용하게 사용할 수 있습니다. 예제. const 미사용 int Add(int a, int b){ int result; result = a + b; return res..

프로그래밍 2020.10.21

주석에 대한 생각

안녕하세요 업글입니다. 주석에 대한 저의 의견을 작성해보고자 합니다. 회사 선배에게 주석이 많으면 좋을까? 적으면 좋을까?라는 질문을 받은적이 있습니다. 저는 당시 주석을 꼼꼼하게 많이 다는 것이 좋다라고 대답하였습니다. 회사 선배의 의견을 저의 의견과 반대로 주석이 없는 코드가 가장 좋은 코드라고 답했었습니다. 코드만 보고도 가독성이 좋아서 바로 이해할 수 있는 코드는 주석이 필요 없다라는 의견이었습니다. 당시 완전 공감할 수는 없었지만 공감이 되는 부분도 있었습니다. 저와 같이 공감하시는 분도 계실 것이고 공감을 못하시는 분도 계실 것이라 생각됩니다. 현재 제가 주석을 다는 몇가지 방법이 있습니다. 첫번째, 최대한 주석 없이 이해할 수 있도록 변수, 함수명을 잘 정해야 한다. 예를 들어서 클라이언트와..

프로그래밍 2020.10.19

c언어/c++ static

안녕하세요 업글입니다. c언어 static 키워드에 대해서 설명드리겠습니다. 기초적인 문법에 대한 내용이 아닌 어떤 장점이 있는지에 대해 중점적으로 설명드리겠습니다. c언어 static 키워드의 기초 개념에 안다고 가정하고 설명드리니 모르시는 분은 구글링을 통해서 기초 개념에 대해서 공부하신 후 읽어보는 것을 추천드립니다. static은 정보은닉을 위해 사용됩니다. 여기서 정보은닉이란 c언어가 아닌 주로 객체지향의 특징으로 설명하는 것을 많이 보셨을거라 생각됩니다. 객체지향에서 정보은닉이란 변수나 함수를 객체 내부에서만 사용하는 것입니다. c언어 관점에서 보면 변수나 함수를 일정 범위(함수 or 파일)에서만 사용하는 것입니다. c언어에서 static은 크게 3가지 경우에 사용할 수 있습니다. 첫번째, 지..

프로그래밍 2020.10.19

c언어/c++ enum

안녕하세요 업글입니다. c언어 enum 사용 시 간단한 팁을 공유드립니다. enum의 정의와 문법에 대해서 모르시는 분은 구글링을 통해서 이해하시고 보시는 것을 추천드립니다. 예를 들어서 설명드리겠습니다. 0 ~ 3까지 상수에 이름을 붙일 때 #define과 enum을 통해서 아래와 같이 각각 상수에 이름을 붙일수 있습니다. #define ZERO 0 #define FIRST 1 #define SECOND 2 enum{ ZERO, FIRST, SECOND, } enum을 사용하는 경우 몇가지 장점이 있습니다. 1. 추가로 상수에 이름을 붙여야 하는 경우 일일이 #define으로 써줘야 하지만 enum의 경우 가장 밑의 정의에 추가만 해주면 되므로 상수 추가 시 편리합니다. #define ZERO 0 #d..

프로그래밍 2020.10.14