일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- doit코틀린프로그래밍
- Tips프로그래밍강좌
- 백준
- 이지스퍼블리싱
- 알고리즘
- Win32
- Direct2D
- 김성엽
- Desktop
- Programming
- Tips강좌
- 리뷰
- Visual Studio
- Javascript
- c
- 연산자
- 지식나눔강좌
- 티스토리
- 배열
- 프로그래밍
- 문법
- c#
- Windows
- tipssoft
- CS
- 함수
- Kotlin
- VS ERROR
- c++
- 포인터
- Yesterday
- Today
- Total
목록DEV/Tip (40)
F.R.I.D.A.Y.

Windows OS가 설치된 드라이브를 보면 Program Files이란 폴더와 뒤에 (x86)이라 붙은 폴더가 있습니다. 각각의 폴더는 64비트, 32비트로 개발된 프로그램이 설치되는 기본 폴더를 의미합니다. 그렇다면 64비트 프로그램은 어떻게 개발하고 내가 개발하는 프로그램이 64비트인지는 어떻게 확인할 수 있을까요? 이번 포스트에선 이 방법에 대해 알아봅니다. ※ 이 포스트는 Visual Studio 2019 Community v16.1.2. C 프로젝트에서 테스트되었습니다. 디버그 왼쪽을 보자 상단 메뉴바를 보면 로컬 디버그 작업을 할 수 있는 버튼이 존재합니다. 그 왼쪽을 보면, Debug x86 이 적힌 드롭다운 리스트가 존재하는데요, 여기 보이는 x86이 프로그램을 32비트로 개발하겠다는 설..

프로그램을 작성하다 보면 위와 같이 쓰기용으로 열 수 없다는 오류 표시가 종종 나옵니다. 오늘 포스트에서는 LNK1168 오류가 왜 일어나고 해결방법은 무엇인지 알아봅니다. 원인. 프로그램이 실행되어있음 이 경우에는 프로그램이 이미 실행된 상태이기 때문에 임의 수정을 하지 못하도록 쓰기 접근을 막아 발생하는 문제입니다. 잘 살펴보면 이미 프로그램이 실행된 상태인것이죠. 해결. 프로그램 종료 이 문제는 이미 실행된 프로그램을 종료하는 것으로 문제를 해결할 수 있습니다. 만일 작업 표시줄에 프로그램이 안보인다면 프로세스 매니저, 즉 작업 관리자를 열어 계속 실행이 되고 있는지 확인해보세요.

C6292와 쌍을 이루는 경고입니다. 이 포스트에서는 C6293 경고를 살펴봅니다. 원인. 조건식에 맞지 않는 증감식 원인이 되었던 코드는 다음과 같습니다. for (int i = 0; i < 100; --i) { } 코드상 i값이 커져야 하나 계속해서 감소하고 있습니다. 언더플로우가 발생해 i가 100 보다 커지지 않으면 무한 루프가 돌겠군요. 해결1. 증감식 수정 증감식을 수정하거나 조건식을 수정하는 것으로 문제를 해결할 수 있습니다만, 조건식에 맞추어 코드를 만드니 증감식을 수정하는 게 더 좋아 보이군요. for (int i = 0; i < 100; ++i) { } 코드에 맞게 증감식을 수정해주었습니다. 해결2. 조건식 수정 증감식을 두고 초기화, 조건식을 수정할 수도 있습니다. for (int i..

오늘 시간에는 for 사용시 잘못 사용할 때 2019인텔리센스가 제공하는 C6292 경고를 살펴봅니다. C6293 경고는 이곳을 참고하세요. 그나저나 이젠 이런 것도 경고를 해주네요 :) 원인. 조건식에 맞지 않는 증감식 원인이 되었던 코드는 다음과 같습니다. for (int i = 100; i > 0; ++i) { } 코드상에선 i값이 작아져야하지만 계속해서 증가하고 있습니다. 물론 오버플로우가 발생하면 멈추겠지만 제대로 된 결과가 나올리는 없습니다. 해결1. 증감식 수정 이 경고는 증감식을 수정하거나 조건식을 수정하는 방법으로 제거할 수 있습니다. 그러나 일반적으로는 조건식에 맞추어 코드를 작성하고 증감식을 틀린 경우가 많습니다. for (int i = 100; i > 0; --i) { } 코드에 맞..

Visual Studio가 2017에서 2019로 넘어오며 인텔리센스가 더욱 정교화됐습니다. 이러한 인텔리센스의 업그레이드로 2017에선 하지 않던 경고가 2019에선 하는 경우가 많아졌는데, 이번에 소개할 경고도 같은 경우입니다. 이번 포스팅에서는 C6011 경고가 왜 생기고 어떻게 하면 사라지게 할 수 있는지 알아봅니다. 원인. 잠재적 버그 가능성 #include #include int main(void) { int* p = (int*)malloc(sizeof(int) * 10); for (int i = 0; i < 10; ++i) { p[i] = i + 1; } free(p); return 0; } 대부분의 컴퓨터에서는 문제가 발생하지 않을 코드이지만, 이 코드도 결국 잠재적인 문제를 일으킬 수 있..

아래 코드를 컴파일러에 올리면 C1075 오류가 나옵니다. 이번 시간에는 C1075오류가 왜 나오는지 알아봅시다. #include int main(void) { printf("Hello world!\n"); int a = 5, b = 3; if (a < b) { } else { if (a == b) { } else { } return 0; } 원인 이 문제의 원인은 중괄호의 짝을 맞춰주지 않았기 때문입니다. 대부분의 프로그래밍 언어는 중괄호를 기준으로 변수의 생명주기, 연산을 진행할 코드가 결정됩니다. 해결 중괄호 짝을 맞춰주면 됩니다. #include int main(void) { printf("Hello world!\n"); int a = 5, b = 3; if (a < b) { } else { if..

이번엔 C6001, 초기화되지 않은 메모리 'variable'을(를) 사용하고 있습니다. 경고를 살펴보겠습니다. 원인 변수를 사용하기 전에 메모리에 남아있는 쓰레기 값을 지우지 않고 그대로 사용해서 발생하는 문제입니다. 쓰레기 값을 그대로 사용하면 예상외의 결과가 나올 수 있기 때문에 초기화를 해주어야 한다는 경고를 표시합니다. 해결: 변수 초기화 하기 경고 메시지에서 표시한 변수를 초기화 해주면 해결됩니다. 이 코드에서는 var1이 문제가 되니 아래 코드처럼 선언과 동시에 0으로 초기화해주면 되겠네요. 일반적으로 0을 대입해 초기화하라고 하지만, 필요에 따라 특정 값으로 초기화할 수도 있습니다. #include int main(void) { int var1 = 0; var1 += 5; printf("%..

프로그램을 작성하다 보면 아래 이미지와 같이 파일을 열 수 없다는 오류가 나옵니다. 이러한 오류가 왜 나타나는지 알아보고, 문제를 해결해봅시다. 다만, 안내하는 원인과 해결법은 모든 경우에 대해서 해결하는 방법이 아님을 참고하세요. 원인 1: 존재하지 않는 파일 열고자 하는 파일이 존재하지 않거나, 위치를 잘못 지정해준 경우가 위와 같은 문제가 발생할 수 있습니다. 해결 1: 없는 파일 생성 원인 1의 문제를 해결하기 위해서는 존재하지 않는 파일을 생성해 주어야 합니다. 이 경우에는 hello.h라는 헤더 파일이 존재하지 않으므로 hello.h라는 헤더파일을 생성해주겠습니다. 솔루션 탐색기의 헤더 파일이 이름으로 되어있는 폴더 오른쪽 마우스 클릭한 후 메뉴에서 [추가 - 새 항목]을 클릭합니다. 항목에서..

※ VS2019 기준으로 작성되었습니다. #include int main(void) { int v; scanf("%d", &v); return 0; } 위와 같이 작성하면 다음과 같은 경고가 발생합니다. 경고 수준에 따라 오류로 발생할 수 있습니다. 여기서 C4996 오류는 다음 항목을 참고하세요. 이번 포스트에서는 C6031 오류를 다루겠습니다. 원인 함수 scanf의 반환값을 어딘가에 대입하거나 사용하지 않아서 발생하는 경고입니다. 코드상 문제도 없으며, 단순히 버려지는 값이 있음을 알리기 위해 인텔리센스가 안내하는 내용입니다. 만일 원하는 작업대로 정상 동작 한다면 무시하셔도 됩니다. 경고 가리기 경고를 가리고싶다면 아래 안내를 따라하세요. Plan1. 프로젝트 속성 수정 상단 [프로젝트 - 속성]..

종종 프로그램을 작성하다가 보면 아래와 같은 런타임 오류가 발생하는 경우가 있습니다. 이 문제는 왜 발생하는걸까요? 위 문제는 아래 코드로부터 발생되었습니다. #include int main(void) { int a; printf("변수 a의 값은 %d입니다.", a); return 0; } 위 코드를 작성하고 컴파일을 진행하면 아래와 같은 경고가 발생합니다. 컴파일러 경고 수준에 따라 경고가 오류로 발생할 수도 있습니다. 1. 원인 말 그대로 a 변수를 초기화 하기 전에 해당 변수를 사용해 발생하는 문제입니다. 변수를 처음 만들게 되면 기존 메모리에 들어있는 값을 그대로 사용하게 되기 때문에 어떤 값이 들어있는지 알 수 없습니다. 그래서 예외 발생의 가능성이 있죠. 따라서 프로그램이 변수에 들어있는 값..