일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 리뷰
- 포인터
- 이지스퍼블리싱
- VS ERROR
- Tips프로그래밍강좌
- Visual Studio
- Tips강좌
- c#
- 문법
- 지식나눔강좌
- 백준
- 알고리즘
- Direct2D
- Win32
- 김성엽
- 연산자
- 함수
- 프로그래밍
- doit코틀린프로그래밍
- Programming
- Kotlin
- c
- Windows
- tipssoft
- c++
- CS
- 티스토리
- Javascript
- 배열
- Desktop
- Yesterday
- Today
- Total
목록DEV/Tip (40)
F.R.I.D.A.Y.
Visual Studio만큼 괜찮은 IDE가 없어서[# 진짜 다른 IDE로 못 넘어가겠다..] 리눅스 과제를 할 때도 종종 Visual Studio를 이용해서 코드를 쓰곤 한다. 기존 반反 오픈소스 진영의 대표격인 Microsoft에 새로운 CEO로 사티아 나델라가 취임하면서 그 행보가 바뀌었다. Windows PE 프로그램을 Linux에서 실행할 수 있도록 해주는 Wine의 개발에 직접적인 도움을 준다던지, Github를 인수해버린다던지.. 몇 해 전에는 .Net을 오픈소스로 풀어버렸던 적도 있다. WSL 설치하기 돌아와서, Windows에도 변화가 생겼다. Windows kernel 위에서 Linux 커널이 돌아가도록 업데이트가 이뤄졌다. 이름이 WSL[# Windows Subsystem for Li..
코드에서 메서드를 지웠는데 갑자기 오류가 난다. WinForm으로 작업을 하다가 실수로 Form을 눌러서 메서드가 나와서, 필요 없는 메서드를 지웠더니 위 이미지처럼 오류가 발생했다. 원인 디자이너 코드와 실제 메서드 코드가 상이하기 때문에 발생하는 문제다. WinForm은 디자이너라는 시스템으로 코드 및 UI 관리가 이루어진다. WinForm 디자이너는 개발자의 편한 프로그래밍을 위해 만들어졌지만, 일단은 프로그램이라서 사람처럼 '알아서'가 안된다. CS 파일과 UI 및 이벤트 바인딩[# 컨트롤과 메서드 연결]을 위한 Designer파일이 분리되어있기 때문에 사용자가 직접 메서드만 삭제를 하면 Designer 파일과 CS 파일이 서로 충돌이 발생하면서 위와 같은 문제를 일으킨다. 해결 위 문제를 해결할..
개발의 한 축, 디버깅 시작하며 개발에선 코드를 잘 작성하는 것이 중요합니다. 알고리즘과 더불어 코드 구조를 어떻게 짜느냐도 큰 부분을 담당하죠. 그러나 코드를 짜는 것에 있어, 항상 원하는 결과를 생성하지는 않습니다. 컴파일러단에서 오류가 발생[# 이를 신택스 에러(Syntax error)라 합니다.]하기도 하지만, 런타임 에러나 시맨틱 에러[# 문법상 문제는 없지만 의도하지 않은 결과가 일어나는 것, 그것을 시맨틱 에러(semantic error)라 부릅니다.]가 일어나기도 합니다. 이와 같은 버그를 해결하는 것을 우리는 디버깅이라 부릅니다. 요즘은 디버깅 능력을 보조하는 여러 툴이 있지만, 오늘은 IDE로 Visual Studio를 사용하는 이들에게 도움이 되는 글을 가져옵니다. 디버깅 Visual..
VS ERROR E1087 해당 오류는 여러 이유로 발생할 것으로 생각된다. 따라서, 각 파트에 맞추어 작성하겠다. 함수 한정자 const 사용 코드를 작성할 때, 클래스 메서드에서 멤버 필드에 쓰기를 제한하도록 하는 구문이 있다. class test{ private: int a; public: void accessA() const{ a = 5; // error } } 이런 식의 구조인데, 코드를 보게 되면, accessA 함수 뒤에 const로 한정자가 작성되어 있다. 멤버 함수 뒤에 붙는 const가 객체에 접근해 쓰기를 제한하도록 하는 구성이다. 원인 E1087 에러가 나는 방식 중 하나는 const 메서드에서 에서 일반 메서드를 호출할 때 이다. int Test::a() const{ b(1);//..
XML 문서(Visual C++) 자세한 정보: XML 문서 (Visual C++) docs.microsoft.com 메서드 구현 등을 진행했을 때, 해당 방식을 이용하면 새로 생성한 메서드를 참조할 때 인텔리센스가 보고 사용자 편의를 향상시킨다. 적용 전 적용 후
메모리 관련 작업을 하면 주로 보이는 C6385 발생 재현 C6385 경고는 주로 메모리 할당 관련 작업을 할 때 일어납니다. MS 공식 문서의 내용을 보면 접근이 허용된 메모리 공간을 벗어난 경우에 이런 경고를 띄우는 것으로 안내하고 있습니다. int arr[10]; int i = 0; while(i
경고 예외 처리를 위해 코드상에 #pragma warning() 시리즈를 작성할 때가 있습니다. 괄호 안에 disable과 suppress가 들어갈 수 있는데, 두 경우는 어떤 경우에 사용되는지 알아보겠습니다. #pragma? 컴파일러의 기능을 제어하는 지시문입니다. pragma는 컴파일러마다, 운영체제마다 정의가 다를 수 있고 그에 따라 하는 작업도 다릅니다. #pragma warning(disable:4996) #pragma warning(suppress:4996) 두 지시문은 같은 기능을 합니다. C4996 경고를 해제해주는 지시문으로, 해당 지시문을 사용하면 프로젝트 설정 여하에 상관 없이 SDL 대상 함수(scanf 등)를 사용할 수 있습니다. disable 해당 옵션으로 사용하면 파일 내에 존..
오랜만에 돌아온 VS ERROR 시리즈입니다. 이번 시간에는 C6385 경고를 살펴봅니다. 문제 코드 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int arr[5] = { 0, }; for (int i = 0; i < 5; ++i) { scanf("%d", arr + i); arr[5] += arr[i]; // 오류 발생 위치 } return 0; } 원인. 접근 가능한 메모리 이탈 위 코드에서 접근 가능한 메모리 인덱스는 0부터 4입니다. 그런데 경고가 발생하는 위치에서는 인덱스를 5로 사용하고 있습니다. 따라서 범위를 수정해주면 정상적으로 경고가 사라집니다. C6201 경고가 함께 발생하는 것을 보니 일차원 배열에 대해서는 스택 범위까지 V..
goorm ide에서 코틀린 프로젝트를 실행한다면 위 이미지처럼 오류 이미지가 발생할 수 있습니다. 해결 방법을 알아봅니다. 원인 알려진 원인으로는 프로그램의 진입점(엔트리 포인트, entry point)이 잘못 작성되었을 때가 있습니다. fun main(){ println("Hello world!") } 어떤 문서에서 본다면, 진입점을 이렇게 구성할 수 있다고 말합니다. main() 처럼 말이죠. 진입점을 이렇게 구성한 것에서 문제가 발생한 것입니다. 코틀린의 엔트리 포인트에서 위 코드처럼 작성해도 되는 것은 코틀린 1.3에서부터 입니다. goorm에서는 아쉽게도 1.3 버전이 아닌 그보다 낮은 1.1.2-5을 이용하고 있습니다. 1.3버전에서 제공하는 기능이니 goorm을 사용하는 우리는 이전 버전의..
웹서핑을 한다던지, 학교 친구들과 얘기를 나눠보면 의외로 간단한 부분에서 막히는 경우가 있습니다. 프로그램을 만드는 행위 자체가 생소해서인지 일상생활에선 간단히 해결할 문제들을 고심하는 경우를 많이 봐 왔습니다. 그래서 이 참에 내 주변에서 겪어온 문제들을 일상에 빗대어 설명해보고자 이런 프로젝트를 구상했습니다. 프로그램에 일상을 더하다 이 프로젝트를 위해 만든 문장입니다. 프로그램은 생소하지만 결국은 사람이 만드는 것. 일상의 지혜가 프로그램에서도 적용된다는 것을 알려드립니다. 이 프로젝트는 경험에 의해 입문자들이 어려워하는 부분을 다룹니다. 따라서 깊이 들어가지 않으려 합니다. 또한, 경험에 의거하다 보니 어려움을 겪는 특정 지인에게 설명하는 글이 될 수 있습니다. 따라서 각각의 포스트가 동일한 언어..