프로그래밍

해당되는 글 140
thumbnail
프로그래밍/C++

[C/C++] 선언(Declaration)과 정의(Definition)의 차이

* 본 글은 학부생의 눈높이에 작성되었습니다 int a; int a = 10; 오류C2086'int a': 재정의 위 코드를 Visual Studio 에서 실행해보면 int a가 재정의(redefinition) 됐다는 오류 메세지가 출력되면서 컴파일이 되지 않습니다. 이런 오류 메세지는 컴파일러마다 다른데 재정의가 아니라 재선언(redeclaration) 이라는 오류 메세지가 출력되기도 합니다. 과연 정의와 선언의 차이는 무엇일까요? 정의와 선언은 다양한 프로그래밍 자료에서 혼동되어 사용되는 단어긴 하지만 엄밀히 따지면 이 둘은 다른것 입니다. 오늘은 이에 대해 알아보겠습니다. 선언(Declaration) vs 정의(Definition) 모든 정의는 선언을 포함하고 있지만 모든 선언은 정의가 아니다. 즉..
thumbnail
프로그래밍/C++

[C++] Natural Sort 사용하기

숫자, 이름이 여러 섞여 있는 내용의 문자열에 대해 윈도우 탐색기와 같은 정렬을 기대하려면 Natural Sort 라는 정렬을 시행해야 합니다. Natural Sort 란 쉽게 말해서 인간이 하는 방식으로 영문자 숫자를 정렬하는 방식을 이야기 합니다. 파이썬에선 natsort 라는 라이브러리가 있어서 그냥 pip install 로 설치하고 사용하면 끝이였는데 C++에서는 당연하게도 직접 구현해야 합니다. 제목을 보시면 알겠지만 Natural Sort 구현하기가 아니라 '사용하기' 입니다. 깃허브에 이미 친절하게 구현을 해둔 분이 있어서 이걸 사용하시면 됩니다. https://github.com/scopeInfinity/NaturalSort GitHub - scopeInfinity/NaturalSort: ..
thumbnail
프로그래밍/Etc

[VIM] ESC 입력 시 (일반모드) 자동으로 영문으로 전환해주는 유틸리티

VIM을 사용할 때 ESC나 Ctrl + [ 를 입력하면 일반 모드(Normal Mode) 로 이동이 되는데 한글 상태에서 일반 모드로 전환을 하면 영문 입력이 제대로 되지 않아서 일반 모드의 기능을 제대로 사용할 수 없습니다. 그래서 한글로 전환된 상태라면 일반 모드에서는 한영키를 한번 더 눌러줘야 하는 불편함이 있습니다. 매번 작성하면서 한영 유무를 확인한다는 것은 번거롭고, 특히 프로그램 개발자로써는 말도 안되는 일이라고 생각해서 인터넷에 공개된 소스코드를 참고해 관련 유틸리티를 제작했습니다. https://github.com/pgh268400/VIM_AUTO_HANGUL/releases/tag/v1 Release main_release · pgh268400/VIM_AUTO_HANGUL github..
thumbnail
프로그래밍/C++

[C++] Visual Studio <std::filesystem> 사용하기

서론기존에 대학교 프로젝트로 C언어를 이용해 파일 이름 변경기를 만든적이 있었습니다. C언어에는 string class도 없어서 문자열들을 배열에 동적으로 저장하고 싶으면 char[] 을 이용해서 동적할당으로 구현해야 했고, 이에 따른 버그가 다량으로 발생했습니다. (예를 들어서 파일 이름을 변경할 때 치환할 문자열이 너무 길거나 illegal 한 문자가 들어가면 프로그램이 그대로 튕겨버린다던가..., C에서는 예외처리 문법도 없습니다 ;;) 또한 디렉토리 내에 파일을 순회할 때 C언어에서 공식적으로 파일 시스템에 관한 기능이 제공되지 않아서 우회책으로 dirent.h 이라는 헤더 파일의 조금 수정된 버전을 이용해서 기능을 구현했던 기억이 납니다. *dirent.h를 사용해서 디렉토리 순회하는 방법에 관..
thumbnail
프로그래밍/Talk

[C++] C++ 싫어. 파이썬 좋아.

도대체 이놈의 언어는 동적 할당 하나 때문에 class에서 고려해줘야 하는게 몇개인지.. 복사 생성, 복사 대입, 이동 생성, 이동 대입... 하다보면 정말 C++이 얼마나 극한의 성능 최적화가 가능한지 알게 됨과 동시에, C에서 객체 지향 개념만 추가하다가 이것 저것 다 추가해서 누더기 괴물이 되어버린 C++이 얼마나 방대한 언어인지 새삼 깨닫게 됩니다.. 특히 임시값을 가리키는 Rvalue Reference는 또 어떻게 만들 생각을 했는지.. GC(가비지 컬렉터) 가 있는 언어가 정말 그리워 지는군요 ㅜ ㅜ 이와는 반대로 온갖 고생해서 컴파일하면 kb 단위 exe 용량이랑, 엄청 빠른 수행 속도 보고 또 그런 생각이 사라지기도 하고..
thumbnail
프로그래밍/Flutter

[Flutter] 플러터 3.0 출시

https://docs.flutter.dev/development/tools/sdk/release-notes/release-notes-3.0.0 Flutter 3.0.0 release notes Release notes for Flutter 3.0.0. docs.flutter.dev 최근 Flutter 3.0이 출시 되었습니다. 놀랍네요. 솔직히 2.0까지 배워보면서 좋은 프레임워크는 맞는데 만든 곳이 그 구글이기 때문에.. 언제 폐기할지 모른다는 두려움이 은연중에 남아 있었습니다만 자사 앱도 몇년동안 플러터로 계속 빌드하고, 이번에 3.0까지 출시 해준걸로 봐서는 꽤나 전망이 밝아보입니다. Dart라는 언어로 코딩해야하는건 아직까지도 별로 마음에 들진 않습니다만 그래도 비동기가 간편하게 구현된다는 점은..
thumbnail
프로그래밍/BaekJoon

[Baekjoon] 17626번: Four Squares

https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 문제 설명 라그랑주에 의하면 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명 되었습니다. 예를 들어서 3은 $3 = 1^2 + 1^2 + 1^2$ 으로 나타낼 수 있습니다. 3을 입력하면 항이 $1^2$ 3개이므로 (제곱수가 3개이므로) 출력값은 3입니다. 7은 $7 = 2^2 + 1^2 + 1^2$ 으로 나타내집니다. 7을 입력하면 항..
thumbnail
프로그래밍/Python

많은 파일을 한꺼번에 폴더로 정리하자! Directory Packager

Directory Packager는 파일을 갯수단위로 묶어서 폴더로 정리해주는 프로그램입니다. 폴더를 묶을때 방식은 순차 작업, 균등 작업, 랜덤 작업으로 총 3가지를 지원합니다. 사용 방법 게임을 하면서 스크린샷을 찍었는데 플레이 타임이 100시간이 넘어가다 보니 파일이 1321개로 상당합니다. 티스토리에 올리려고 보니깐 한번에 50개씩 올리라고 하더라구요? 50개씩 파일 잡으니깐 햇갈리기도 해서 이런 다량의 파일을 파일 갯수 단위로 폴더로 정리해주면 어떨까 해서 한 번 프로그램을 만들어 봤습니다. 폴더 열기를 통해 작업할 폴더를 선택한 뒤, 순차 작업 모드로 50개, 폴더 명은 section_{i} 로 정합니다. {i} 는 자동으로 프로그램에서 붙여주는 번호에 대한 특별한 지정자 입니다. 예를 들어서..
최근글
인기글
이모티콘창 닫기
울음
안녕
감사
당황
피폐