본문 바로가기

C/C++15

C/C++ 매크로를 사용한 정수 타입 swap C/C++ 코딩 시 변수끼리 값을 바꾸고 싶은 경우들이 있습니다. 이를 보통 변수 swap 이라고 하는데 a, b 라는 두 변수간에 값을 바꾸기 위해서는 보통 하나의 변수가 더 필요 합니다. temp 라는 하나의 변수를 더 써서 다음과 같이 변경하는 게 일반적이죠. 비트 연산을 하지 않는 실수 타입들은 아래 방식으로 하는 게 맞을 겁니다. temp = a; a= b; b= temp; 하지만 정수 타입의 경우 비트 연산을 이용하여 temp 라는 추가적인 변수 없이 swap 이 가능 합니다. 아래와 같이 Exclusive OR 연산을 세 번 사용하면 변수끼리 값을 바꿀 수 있습니다. #define SWAP(a, b) a ^= b; b ^= a; a ^= b; 위 매크로에 대해 다음과 같이 테스트 해 봤습니다.. 2016. 2. 19.
DRAKON editor 소개 오늘은 좀 독특한 언어에 대해 소개해 드리려 합니다. 해당 언어의 이름은 DRAKON editor 라고 하고 홈페이지는 아래 주소와 같습니다. http://drakon-editor.sourceforge.net/ DRAKON editor는 아래 그림과 같이 그래프를 사용해서 코딩을 하는 툴이라 할 수 있습니다. 홈페이지에서도 visual language 라고 되어 있네요. 홈페이지에는 러시아 우주 프로그램에 사용되었다고 하는데~ 요즘 자동차 쪽에서 이슈인 MBD(Model Based Design)와 비슷한 컨셉으로 보였습니다. 그런데 약간 사용을 해보니 완전 그렇지는 않은 게 MBD의 경우 MATLAB Simulink 등을 통해 그래프를 그리면 코드가 나오는 형태임에 반해 DRAKON editor 는 그래.. 2015. 10. 5.
Eclipse plugin Bracketeer 오늘은 Eclipse 플러그인 주에 제가 요즘 유용하게 사용하고 있는 Bracketeer 라는 플러그 인에 대해 소개하려 합니다. Bracketeer 플러그인은 괄호 또는 중괄호의 짝을 맞춰 주는 플러그인 입니다. Source Insight 와 같은 에디터를 사용해 보신 분들이라면 쉽게~ 아~~ 이거구나~ 하실 겁니다. 홈페이지는 아래 주소와 같습니다. http://marketplace.eclipse.org/content/bracketeer-cc-cdt 설치는 Market Place 에서 Bracketeer 라고 검색을 해보면 아래와 같이 Java 용과 CDT 용이 나옵니다. 저는 현재 C/C++ 을 주로 사용해서 cdt 용을 설치 했습니다. 설치가 다 끝나면 다음과 같이 Bracketeer 관련한 아이.. 2015. 5. 2.
C/C++ 비트연산 매크로 C/C++ 코딩 시 비트 연산은 굉장히 많이 하지만 자주 실수하는 부분입니다. 이런 비트연산들은 임베디드 시스템 설계시 자주 사용하곤 하는데 자주 사용하는 만큼 매크로로 만들어서 사용하면 편리하겠쬬. 제가 사용하는 비트연산 매크로는 다음과 같습니다. 필요하신 분들은 사용하시길~ 2015. 3. 31.
Python C/C++ 주석 지우기 C/C++ 코드를 버전에 따라 다른 형식으로 작성해야 할 경우가 종종 있습니다. 예를 들어 어떤 경우에는 주석을 다 지우고 전달해야 하는 경우가 있는데~ 이런 경우를 위해 파이썬으로 C/C++ 주석 지우는 코드를 만들어 봤습니다. 아래 코드에서 workingDir = "D:\TestFolder" 부분을 코드가 들어있는 최상위 폴더로 맞춰 주면 *.c, *.h 파일의 모든 주석을 지워줍니다. C++ 코드 라면 AllFileList 부분에서 *.CPP 와 같은 확장자를 추가해 주면 됩니다. 2014. 12. 25.
Notepad++ 로 C/C++ 코딩 할 때 유용한 플러그인들 Source Cookifier, SourceSwitch, Explorer 코딩을 할 때 Ctags 와 같이 해당 코드로 점프하는 기능이나, 프로젝트에 대한 폴더 구조를 쉽게 볼 수 있는 기능들이 필요한데요~ 오늘은 Notepad++에서 이러한 기능들을 쉽게 사용할 수 있도록 해주는 플러그인들에 대해 소개하려 합니다. Notepad++ 에서 탐색기와 같이 폴더 구조를 보여주는 플러그인은 Explorer 를 사용하시면 됩니다. 플러그인 → Plugin Manager 에서 아래 그림과 같이 Explorer를 선택한 후에 Install 을 해주시면 설치 됩니다. 설치 후에 플러그인 → Explorer → Explorer 를 클릭해 주시거나 아래 그림에서 보이는데로 보이는데로 Ctrl+Alt+Shift+E 를 누르시면 옆에 폴더 구조가 보여 집니다. 또한 Go to Path를 누르면 .. 2014. 2. 5.
Eclipse 내가 사용하는 플러그인들 Eclipse 를 사용한 개발은 참 재미있는 것 같다. 기본 프로그램에 각종 플러그인들만 추가하면… 대부분의 코딩이 가능하고 그냥 일반적인 에디터에서 코딩하는것에 비해 그 효율성이 확실히 배가 된다. 뭐 사람들이 많이 사용하는데는 다~~ 그 나름의 이유가 있는 법!! 아래 글에서 밝힌 바와 같이 현재 나의 Eclipse 버전은 Kepler (4.3) 이다. 2013/09/29 - [컴퓨터일반] - Eclipse Kepler upgrade 방법 플러그인 설치 방법들은 무지하게 간단한데~ Help → Install New Software 에 들어가서 각 플러그인들의 주소를 설정해 주고 install 해 주면 된다. C/C++ 코딩을 위한 CDT 플러그인 각 버전별 CDT 플러그인 들은 아래 주소에서 확인 가.. 2013. 9. 30.
Eclipse 프로젝트에서 C/C++ Makefile 생성하기 저는 윈도우 환경에서 C/C++ 코딩을 할 때 MinGW 등을 이용하곤 하는데요~ 아래 포스팅들에서 밝힌바와 같이 C/C++ 코딩시 CodeBlocks 를 주로 사용해 왔습니다. 2013/01/20 - [유틸] - Code::Blocks 12.11 좋아졌네요. 2013/01/01 - [유틸] - Code::blocks에서 SQLite3사용하기 2012/08/26 - [컴퓨터일반] - CodeBlock 에서 FFTW 라이브러리를 사용한 FFT 실습 2012/07/31 - [컴퓨터일반] - Codeblock 에서 DLL 사용하기 cbp2make 등을 이용해서 Makefile 도 생성할 수 있고 굉장히 가벼워서 편리하더군요. 2012/12/06 - [유틸] - Codeblock Project 에서 C/C++ .. 2013. 6. 6.
C/C++ 매개변수를 갖는 매크로, #, ## 연산자 C/C++ 코딩시 매크로는 #define 을 사용하여 다음과 같이 정의하곤 합니다. 단순하게 상수등을 다음과 같이 정의하곤 하지만~ #define PI (3.141592) 상수 뿐만이 아니라 매개변수등도 이용할 수가 있습니다. 사용법은 굉장히 단순한데요. 다음과 같이 원의 넓이를 구하는 매크로를 구성할 수 있습니다. #define CIRCLE(x) ((x)*(x)*(PI)) 매크로 정의시에는 항상 모든 부분들을 괄호를 이용하여 꼼꼼하게~ 묶어 주는 게 좋습니다. 그렇지 않으면~~ 까딱 잘못하다가 예상치 못한 결과를 얻을 수 있거덩여~ 다음으로 # 연산자를 간단하게 소개하겠습니다. 이미 많은 분들이 아시겠지만, # 연산자는 매개변수를 문자화 하는 연산자 입니다. 다음과 같이 사용합니다. #define ST.. 2012. 10. 29.
deque 이용 Memory shift 실험 지난 포스팅에서 memmove() 함수를 이용한 memory shift 실험을 수행했었는데~ 2012/08/06 - [컴퓨터일반] - C/C++ memmove() 함수 속도 실험 memmove() 함수의 속도가 for 문을 이용했을 경우에 비해 그리 빠르지 않은 것을 확인했었습니다. 그래서 계속 찾다 보니 C++ STL 에 deque 가 있더군요. 디지털 필터 설계시의 memory shift 는 이전 신호는 없애고 현재의 신호가 끝에 들어가는 동작이 반복되기 때문에 C++ STL 의 deque 가 적격이라고 생각되는군요. 그래서 얼마나 빠른지 다시 한번 실험을 해봤습니다. 본 실험은 컴퓨터 성능에 따라 다르겠지만 for 문, memmove(), deque 사용에 따른 상대적인 속도 차이를 비교하기 위한 .. 2012. 8. 15.
C/C++ memmove() 함수 속도 실험 이전 포스팅에서 memcpy() 함수와 for 문을 이용한 메모리 복사의 속도 실험을 해 본적이 있었는데요. 2012/07/16 - [컴퓨터일반] - C/C++ memcpy() 함수 속도 오늘은 그 연장선으로 memmove() 함수의 속도 실험을 수행해 봤습니다. memcpy() 함수는 인자로 들어가는 두 메모리가 다른 주소여야 하지만 다음과 같은 정의의 memmove() 함수는 source 와 destination 이 같은 주소여도 상관이 없는 것으로 알고 있습니다. void * memmove ( void * destination, const void * source, size_t num ); 즉 memmove() 함수는 소스가 겹쳐지는 부분에 대해 내부적으로 고려를 해주는 뭔가가 더 들어간다는 거죠... 2012. 8. 6.
C/C++ memcpy() 함수 속도 C/C++ 에서 메모리 복사를 위해서 사용하는 함수로 memcpy() 함수가 있습니다. for 나 while 과 같은 루프를 이용해서 메모리를 복사 할 수 도 있지만, memcpy() 함수를 이용하는 것이 속도 면에서 월등히 빠르다고 하더군요. 그래서 오늘 포스팅에서는 memcpy() 와 루프 문을 이용한 메모리 복사의 속도 비교를 해 보려 합니다. memcpy() 함수는 string.h 에 정의 되어 있고 그 원형은 다음과 같습니다. void * memcpy ( void * destination, const void * source, size_t num ); source 에서 destination 으로 num 만큼을 복사 하는 간단한 형태입니다. 비교를 위해서 배열의 크기에 따른 시뮬레이션을 수행해 봤.. 2012. 7. 16.
[C/C++] Q, erfc function 오늘 간만에…… 왠 바람이 불어서인지는 모르겠지만…… Math.h 헤더 파일을 들여다 보게 되었다. 예전에는 그냥 무심코 쓰던 헤더였는데…… 이상하게 보고 싶어서 머가 들어있나 들여다 봤다. 근데 이런 썩을…… erfc() 함수가 아주 예쁘게 정의되어 있었다. erfc() 함수가 정의되어 있다는 건 Q-function 도 아주 손 쉽게 정의해서 쓸 수 있다는 것이고~~ 참조: 2011/03/19 - [MATLAB] - MATLAB erf, erfc, Q- function 내가 암 것도 모르던 무식한 시절 ~~~ 날 밤 새가며 사다리꼴 적분 법으로 짰던 Q-function 은 단 한 줄로 끝난다는 얘기였다. qfunc()는 다음과 같이 짤 수 있다. #include double qfunc(double v).. 2011. 10. 5.
C 언어 이차원 동적 배열 C 코딩 시 동적 배열은 malloc() 또는 calloc() 함수를 주로 사용한다. 보통 malloc() 함수는 다음과 같이 사용한다. Int * Arr; // 배열에 대한 포인터 선언 Arr=(int *)malloc(X * sizeof(int)); // malloc() 함수 이용 동적 배열 선언, X 는 배열의 크기 , Arr[0], Arr[1]… 등으로 각 인자의 값에 접근 free(Arr); // 동적 배열 free calloc() 함수는 다음과 같이 사용한다. Int * Arr; // 배열에 대한 포인터 선언 Arr=(int *)calloc(X , sizeof(int)); // calloc() 함수 이용 동적 배열 선언, X 는 배열의 크기 , Arr[0], Arr[1]… 등으로 각 인자의 값에.. 2011. 10. 5.
Programming language 인기도 전세계의 사람들은 어떤 프로그래밍 언어를 주로 이용할까에 대한 궁금함을 항상 가지고 있었다. 인터넷 검색을 통해 이런 궁금증을 해결해 줄 수 있는 사이트를 발견했다. TIOBE 소프트웨어라는 회사의 홈페이지에는 한 달에 한번씩 프로그래밍 언어의 인기도에 대한 순위를 올려 놓는다. 아래 순위의 출처는 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 다. 이번 달의 프로그래밍 언어 인기도는 다음과 같다. 역시나 이번에도 1등은 자바다. 2~3 등을 하고 있는 C/C++ 야 뭐 워낙에 기본이 되는 프로그램 이니깐 할 말이 없고, 파이썬과 C#의 약진이 눈에 뜬다. 작년 까지만 해도 파이썬이 저 정도는 아니었던 것 같은데…… 요즘 진짜 많이 사.. 2011. 3. 7.