일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Desktop
- c
- CS
- VS ERROR
- Programming
- 알고리즘
- Tips강좌
- 리뷰
- 포인터
- Windows
- Javascript
- 김성엽
- Tips프로그래밍강좌
- tipssoft
- 지식나눔강좌
- doit코틀린프로그래밍
- 이지스퍼블리싱
- 백준
- 프로그래밍
- c#
- 문법
- Direct2D
- 함수
- 배열
- c++
- 티스토리
- Win32
- Visual Studio
- 연산자
- Kotlin
- Yesterday
- Today
- Total
목록DEV/C C++ (119)
F.R.I.D.A.Y.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bijkQv/btq1yZsSCc1/MuHaTpAE3Ky907cybQE0zk/img.png)
이제부터 코드를 사용합니다. 메인 함수 생성하기 Win32 프로그램은 Windows.h 헤더가 필요합니다. 그러니까 이전에 만들었던 main.cpp 첫 줄에 헤더를 추가합니다. 그리고 나서 메인 함수를 생성합니다. 자세히 보면, WinMain 함수의 세 번째 인짜 LPSTR은 변수 값이 존재하지 않습니다. 우리는 명령줄 인수를 받지 않을 것이므로 변수 이름은 작성하지 않았습니다.[# 그럼 지우면 안되냐구요? 안됩니다. 그럼 운영체제에서 프로그램을 실행시키는 WinMain을 못찾아요] 여기까지 하면 일단 실행은 하는 프로그램이 만들어졌습니다. 그런데 우리는 이걸 원하지 않습니다. 창이 뙇! 하고 나오는 그런 프로그램을 원합니다. 아쉽게도 아직 그 자리까지 가기에는 멀었습니다.[# C++을 기반으로 아무 서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mpm0k/btq1yFBoaQz/UK3JaSKen18kLiWTPb0070/img.png)
프로그램을 생성하려면 일단 프로젝트가 있어야하니, 이번까지는 코드를 작성하는 일이 없습니다. 프로젝트 생성하기 새 프로젝트 만들기에서 데스크톱 마법사를 선택하고 다음을 누릅니다. 간단히 프로젝트 이름을 생성하고 만들기를 클릭합니다.. 여기에서는 WinUI로 했습니다. 애플리케이션 종류에서 데스크톱 애플리케이셔(.exe)를 선택하고, 추가 옵션에서는 빈 프로젝트를 선택합니다.[# 자질구레한거 싫어하니까] 프로젝트에 메인이 될 파일 하나를 생성합니다. cpp 파일로 만들어주세요. c로 만들어도 되지만, 언젠가 cpp 기술을 사용할 것 같아서요. cpp를 추천드립니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AHkox/btq1e7ZQKsd/07J6abnWORoUnEEVUZCKbK/img.png)
Win32 프로그래밍을 진행합니다. ⁕ 참고 본 문서는 Win32를 마스터하지 않은 상태로 '나'에게 맞추어 작성되었으므로 용어나 설명에 있어 난해한 부분이 일부 존재할 수 있습니다. 수정이 필요한 부분, 혹은 함께 글을 읽으면서 이해하기 어렵거나 부연 설명이 필요한 부분이 있다면 댓글로 달아주시기 바랍니다. 엔트리 포인트 우리가 C/C++ 콘솔 프로그램[# 이하 콘솔 프로그램]을 작성할 때 가장 먼저 작성하는 함수는 main이었습니다. 콘솔 프로그램은 여러 복잡한 UI 요소가 존재하지 않고, 텍스트로 이용자와 소통합니다. 그리고 대개 동시 처리를 하지 않고 순차적으로 일을 처리하는 절차 지향을 따르고 있습니다. 따라서 main 하나만 있으면 어떤 프로그램이던 일단 실행은 합니다. Win32, 지금은 W..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/crKzbg/btqH4tNFoNU/g9RK8KIOiVBkcHbrW88py1/img.png)
안녕하세요, 이번에 Visual Studio 2019가 나왔습니다! UI가 변경되면서 기존 VS2017에서 프로젝트 만들기와 차이가 있을 것 같아 이렇게 포스트를 하게 되었습니다. 그럼 시작합니다. 참고사항 프로젝트 이름이나 소스파일의 이름에 한글은 지양해주세요. 예기치 않은 문제가 발생할 수 있습니다. SDL문제(C4996, scanf 빌드/컴파일 오류)는 다음 포스트를 참고하세요. 프로젝트 생성하기 프로그램을 시작하면 아래 이미지와 같이 시작 화면이 나옵니다. VS2017과 초기 화면이 달라서 기존 포스팅을 보고 난감해하실 수도 있겠네요. [시작] 항목의 [새 프로젝트 만들기]를 누릅니다. 빈 프로젝트를 선택하고 확인을 누릅니다. 이 때, 빈 프로젝트 속성으로 C++, Windows, 콘솔 이라고 작..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bd9BL8/btqH4tzdFV7/QYlRxV40hhkkakkAu7rZok/img.png)
C언어의 반복문에 대해 알아봅니다. 일반적인 코드 작성 1부터 10까지 차근차근 더하는 코드를 작성해보겠습니다. #include int main(void){ int total = 0; total += 1; total += 2; total += 3; total += 4; total += 5; total += 6; total += 7; total += 8; total += 9; total += 10; printf("1부터 10의 합은 %d 입니다.\n", total); } 고작 더하는 값에 열 줄을 작성했습니다. 만일 더해야 하는 범위가 10까지가 아니라 100, 아니 그보다 더 큰 수라면 어떻게 하시겠어요? 이렇게 반복적으로 작업을 해야 하는 것은 많습니다. 그래서 반복문이 생겨났습니다. 반복문 이름 그대..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ISGSR/btqG6HyKzQw/kyKh234lMKpKH5ItFVryWk/img.jpg)
오늘 시간에는 컴파일러 최적화에서 대상 변수를 제외하는 volatile 키워드를 알아보겠습니다. volatile 휘발성의, 변덕스러운 등의 뜻을 가진 volatile은 사용되는 변수의 값 변경이 확실히 이루어져야할 때 사용합니다. 우리가 컴파일을 진행할 때, 컴파일러는 만들어지는 프로그램의 속도 향상을 위해 코드 최적화를 시행합니다. 코드 최적화 과정에서는 우리가 의도적으로 만든 코드가 일부 변경되기도하는데요, 그 과정에서 값의 대입이 무시되는 경우가 있습니다. 아래 코드를 보겠습니다. #include int main(void){ int var = 5; var = 3; var = 2; printf("var의 값: %d\n", var); return 0; } 이 코드에서는 int 타입의 변수 var에 처음..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d1B6Hf/btqFYYPfyky/vF9pscaCPy0LUyEh1Oe2Bk/img.png)
위 이미지처럼 종종 숫자를 순서대로 나열하는 것이 아니라 지그재그로 출력하도록 하는 문제가 있습니다. 이 문제를 어떻게 해결하는지 알아보겠습니다. 수식 찾기 이미지의 숫자에 대한 정규식을 찾아보죠. 1, 3, 5번째 라인의 경우 x좌표[# 편하게 이야기해서 x좌표지 실제로는 column. 열이 되겠네요.]의 증가와 따라가는데 반해 2, 4번째 라인은 x좌표에 역행하는 것을 알 수 있습니다. 마구잡이로 식이 변경되는 것이 아니라 홀수 라인은 정방향, 짝수 라인은 역방향임을 알 수 있습니다. 따라서 우리는 아래처럼 수식을 만들 수 있겠네요. 홀수 라인 (현재 라인 번호 - 1) * 5 + (현재 x좌표) 짝수 라인 (현재 라인 번호) * 5 - (현재 x좌표 - 1) 프로그램에서는 0부터 시작합니다. 따라서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8Vwgh/btqCKAEQCZ8/N7Aetgu2JK5YHNB8kCjjmK/img.png)
프로그램에 일상을 더하는 첫 번째 시간, 배열을 사용한 여러 항목 정렬하기입니다. 정렬하기 정렬이란 무엇을 뜻할까요? 네이버 사전을 찾아보면 아래처럼 알려주네요. 특정 기준으로 줄 세우기를 하는 것입니다. 한 가지 항목 정렬하기 우리는 먼저 한 가지 항목을 정렬해 볼 겁니다. 들어오는 값은 아래와 같습니다. 5 7 9 3 1 2 8 6 4 10 더보기 # 텍스트 데이터 5 7 9 3 1 2 8 6 4 10 오름차순[# 뒤로 갈수록 값이 커집니다. 그래프로 그리면 점차 올라가는 모양이기 때문에 오름차순입니다. 내림차순은 그 반대이죠.]으로 정렬을 진행해보겠습니다. 값을 입력받는 코드는 아래와 같습니다. #include int main(void){ int arr[10]; for(int i = 0 ; i< 1..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lL8py/btqCn0QaHCM/LkXcEMWlPOpNsXnKDcq0Pk/img.png)
일전에 비트 연산자에 대해 다룬 글이 몇 개 있습니다. 더보기 # 비트 연산자를 다룬 글 비트 연산자 : 메모리 크기 줄이기 최근 비트 연산자에 대한 질문을 들어온지라, 오늘은 비트 연산자에 대해 알아봅니다. 더보기 # 들어가기에 앞서.. 비트 연산자는 프로그래밍에 있어 고급 기술이라 분류할 수 있을 것 같습니다. 따라서 이해도.. pang2h.tistory.com 비트 연산자 : 함수에 인자 넘기기 비트 연산자 : 메모리 크기 줄이기 최근 비트 연산자에 대한 질문을 들어온지라, 오늘은 비트 연산자에 대해 알아봅니다. 더보기 # 들어가기에 앞서.. 비트 연산자는 프로그래밍에 있어 고급 기술이라 분류할 수.. pang2h.tistory.com 이 글들에선 비트합과 비트곱에 대한 내용이 주를 이루었습니다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgAVxc/btqB8P9MiZw/joyVZL8m9da2fiiAVCLPr1/img.png)
실수를 표현하기 위해 C언어에서는 대표적으로 float와 double 자료형이 존재합니다. 이 자료형들이 어떻게 데이터를 가지고 해석하는지 알아봅니다. 실수를 표현하는 방법 우리 일상에는 나이, 날짜, 지폐와 같이 정수로 표현이 가능한 데이터가 존재합니다. 그러나 이것 외에도 키, 몸무게, 환율 등 실수로 표현해야 하는 데이터도 존재합니다. 정수는 이진수의 값을 올리면 된다지만, 0과 1로 표현되는 컴퓨터에서 실수는 단순히 값을 올리는 것으로만은 실수를 표현할 수 없습니다. 그렇다면 우리는 새로운 방법을 시도해볼 수 있습니다. 고정 소수점 특정 비트를 기준으로 한쪽 비트를 실수의 정수 영역을 저장하도록 하고, 반대쪽 비트는 실수의 소수점 영역을 저장하도록 하는 방법입니다. 4바이트, 즉 32비트 공간이 ..