본문 바로가기

반응형

분류 전체보기

(425)
[C/C++] scanf시 엔터 무시 하기 C/C++에서 표준 입력을 받아야 하는 경우 엔터가 입력으로 받아져, 정작 받아야 할 입력을 건너 뛰는 경우가 있습니다. 다음 예를 살펴 볼까요 : char ch1, ch2; printf("첫번째 문자를 입력하시오"); scanf("%c", &ch1); printf("두번째 문자를 입력하시오"); scanf("%c", &ch2); 위와 같이 코딩을 한다면 첫번째 문자를 입력하고 엔터를 치게 되면, 입력 버퍼에 엔터 문자가 남아있게 되어 두번째 입력에서 엔터를 자동적으로 입력을 받아 버리기에 정상적인 입출력이 이루어지지 않습니다. 위 문제를 해결하기 위해 fflush(FILE* fp) 함수와 잘 알려지지 않은 방법으로 "%*c" 포멧을 사용할 수 있습니다. fflush는 입력 버퍼 버퍼를 비워버리고, %*..
[Python] Python 3 struct.pack(): char format requires a bytes object of length 1 예전에 Python 2.x 버전에서 만들어 사용했던 프로그램을 최근에 다시 사용해야 하는 일이 있었습니다. 오랜만의 파이썬 작업이었던지라 환경을 새로 세팅하는 김에 3.x 버전의 파이썬을 설치하고 실행..했습니다만?? 다음과 같은 오류가 나옵니다. Python 3 struct.pack(): char format requires a bytes object of length 1 이게 무슨 말인가? "char 형식은 1 바이트 길이의 객체가 필요합니다"? 아니 이미 pack()함수의 인자로 넘어가는 것은 1byte가 아닐 수 없는 영문 글자 한 글자 인데요. data = 'c' struct.pack('c', data) 그래서 찾아 보았습니다..뭐가 문제인지. stackoverflow.com/questions/..
[C++20] 컴파일 g++ g++ 버전 8부터 C++20의 컴파일이 가능합니다. C++20을 컴파일 하기 위해서는 커맨드라인에 아래 파라메터를 추가 합니다. g++ -std=c++20 만일 g++에서 코루틴을 사용한다면 -fcoroutines 옵션을 추가 해야 합니다. g++ -std=c++20 -fcoroutines Visual Studio 2019 비주얼 스튜디오는 16.3버전 이상 부터 C++20을 지원합니다. C++20을 활성화 시키기 위해서는 아래 두 가지 방법이 가능합니다. 1. '프로젝트 속성 > 일반 > C++ 언어 표준 > 미리보기 - 최신 C++ 초안의 기능(/std:c++latest)' 선택 2. '프로젝트 속성 > C/C++ > 명령줄'에 /std:c++latest 추가 Visual Studio에서 C..
[C++20] 코루틴(Coroutine) - co_await 안녕하세요. 저번 시간의 [진리는어디에] - [C++20] 코루틴(Coroutine)에서는 C++20에서 새로이 도입된 코루틴의 기본에 대해 알아 보았습니다. 이 포스팅은 지난 과정에 이어지는 내용이므로 저번 포스팅을 한번 살펴 보시고 오시는 것이 이번 포스팅을 이해하는데 좀 더 도움이 되리라 생각합니다. 이번 포스팅에서는 지난 시간에 이어 co_await 키워드에 대해 살펴 보는 시간을 갖도록 하겠습니다. co_await expr co_await는 단항 연산자로써, 코루틴의 실행을 중단(suspend)하고 호출자(caller)에게 제어권을 넘기는데 사용 됩니다. co_await의 피연산자(expr)는 co_await operator를 구현했거나 현제 코루틴의 Promise::await_trasnform..
윈도우 계산기로 삼각함수 구하기 늦은 나이에 수학 공부를 다시 하면서 공학용 계산기를 쓸 일이 잦아 졌습니다. 처음에는 복잡한 공학용 계산기의 인터페이스를 보고 막막했는데 알고 보니 없는 기능 빼고는 다 있는 아주 좋은 물건이더군요. 이번 포스트는 윈도우 공학용 계산기를 이용하여 삼각 함수를 구하는 방법에 대해 알아 보겠습니다. (윈도우 공학용 계산기는 윈도우 실행창(Window + R)에서 '계산기' 또는 'calc'로 검색하시면 쉽게 찾을 수 있습니다.) 1. 공학용 계산기 모드로 변환 왼쪽 상단 빨간 박스의 햄버거 메뉴를 클릭 합니다. '공학용'을 선택 하면 이제 부터 공학용 계산기를 사용 할 수 있습니다. 2. 삼각법 삼각 함수를 이용하기 위해 '삼각법'을 클릭 합니다. sin, cos, tan 등의 삼각 함수를 사용 할 수 있..
[C++20] 코루틴(Coroutine) 1958년 멜빈 콘웨이에 의해 처음으로 개념이 만들어 졌으며 이미 많은 현대 프로그래밍 언어들에서 지원하고 있지만 C++에만 없던 코루틴이 C++20 부터 드디어 지원됩니다. 코루틴이 지원되는 것은 너무도 반갑고 만세를 불러야 하는 일인데, 역시 C++은 C++이었습니다. 유구한 역사와 전통을 자랑하는 '자유를 주는 대신 책임도 니가 져라'라는 C++의 정신 답게 코루틴 활용 방법에 자유를 준 대신, 편리한 사용성을 가져갔습니다. 덤으로 제대로 사용하지 못하는 경우의 책임도 사용자가 져야 합니다. 만일 C#과 파이썬, 자바스크립트와 같은 다른 언어의 코루틴 경험이 있으신 분이라면 무슨 코루틴 한번 쓰기가 이렇게 어렵냐고 생각하실지도 모르겠습니다. 하지만 이 글을 끝까지 읽어 보시면 C++코루틴도 나름 익..
Writing a Windows Service Program 얼마 전 리눅스의 데몬(Daemon)이라는 것에 대해 약간이나마 공부를 해야 할 일이 있었습니다. 그리고 그 과정에서 윈도우에서는 그와 비슷한 서비스라는 것이 있다는 것을 알았습니다. 이번 포스팅에서는 서비스 프로그램을 작성하는 방법에 대해 알아 보도록 하겠습니다. 원문은 코드구루(http://www.codeguru.com)의 'Writing a Service Program(Jonathan Ng)' 을 기본으로 하고 있습니다. 윈도우 서비스란? 윈도우 운영 체제에서 '서비스(services)'라는 것은 일반적으로 시스템 부팅시점 부터 시작해 시스템이 끝나는 시점 까지 그 수명을 같이 하는 프로세스를 가리키기도 합니다. 예를 들어 윈도우 베이스 프로그램과 컴포넌트가 남기는 로그를 기록해주는 '로그 이벤트'..
[C++20] 람다 표현식의 변화 들어가며 이번 포스트에서는 C++20의 람다 표현식에 추가된 사항들을 살펴 볼 것이다. 간략하게 요약하면 아래 다섯 가지 정도로 정리 할 수 있다 : 템플릿 람다 추가 : 람다 표현식에서 템플릿 사용 가능 평가 되지 않은 표현식(unevaluated expression)에서 람다 표현식 사용 가능 캡쳐를 사용하지 않는 람다 표현식에서 디폴트 생성자와 대입 연산자 사용 가능 암시적인 this 캡쳐가 컴파일 시 경고 처리 됨(앞으로 deprecated 될 것이라고 경고) Parametaer Pack 캡쳐 가능 템플릿 람다 표현식(template lambda expression) 처음 살펴 볼 변경 사항은, C++20 부터 람다 표현식에도 템플릿의 사용이 가능해졌다는 것이다(기존 C++17까지는 람다 표현식에..
삼각함수 필자는 수학을 못한다. 학생 시절 시험을 치면 다른 과목에서는 하나, 많이 틀리면 두개 정도 틀렸지만 수학만큼은 하나 아니면 두개 정도 맞을 정도로 수학에 대해서는 잼병이다. 본 포스트는 수학을 못하는 필자가 어떻게 삼각함수를 이해하게 되는지에 대한 과정을 그리고 있다. 정의 삼각함수의 정의로 서론을 시작하고 싶었지만, 머릿글에 언급 했듯이 필자는 수학 잼병이라 위키에 소개된 삼각함수의 정의를 봐도 무슨 말인지 이해를 못했다 : https://ko.wikipedia.org/wiki/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98 라디안 나에게는 항상 낮설고 불편하지만, 삼각함수에서 꼭 빠지지 않고 나오는 '라디안'. 우리가 일반적으로 사용하는 60분법을 사용하면 익숙하고 편할 것 같은데..
[C++20] 신규 기능 정리 새로운 문법 지원 콘셉(Concept) - 타입 오버라이딩을 넘어선 타입 속성에 따른 강력한 오버라이드 [C++20] 콘셉(Concept) 코루틴(Coroutine) [C++20] 코루틴(Coroutine) [C++20] 코루틴(Coroutine) - co_await [C++20] 코루틴(Coroutine) - co_yield [C++20] 코루틴(Coroutine) - co_return [C++20] 코루틴(Coroutine) - done() 모듈(Module) [C++20] 당신이 C++20에서 모듈을 써야만 하는 이유(#include와 모듈의 비교) [C++20] 모듈(module) 예제 상수성 지원 : constinit, consteval UTF-8 문자열 지원 : char8_t 신규 std 라이..

반응형