반응형

컴퓨터/C_Programing 19

Visual Studio 2013 완전 제거하기 (setup blocked)

Visual Stidio를 삭제 하였다. 그리고 나서 다시 설치를 하려고 하였다.. 그런데..... visul studio Setup Blocked 이런.. 삭제가 다 되지 않았다고 설치가 되지 않는다고 한다. 삭제 시에 설치파일을 이용하여 uninstall 하지 않고 제어판에서 삭제해서 레지스트리나 무엇인가가 지워지지 않은것 같다. 다시 설치를 해야 되기 때문에 검색을 통하여 이문제를 해결 하였다. https://social.msdn.microsoft.com/Forums/vstudio/ko-KR/c779f967-89ce-482c-a427-ce06d2ffaa1d/visual-studio-community-2013-setup-blocked?forum=vssetup 위의 사이트를 참고 하였다. 설치 파일이 ..

VC 에서 sourcesafe 연결 삭제 하기

출처 : http://nicejay.egloos.com/368888 http://gpgstudy.com/gpgiki/Programming%20%ED%8C%81%20%EB%AA%A8%EC%9D%8C VC++ 프로젝트에서 Visual Source Safe 삭제 방법 시작하기에 앞서 파일들이 읽기전용이면 이를 풀어줍니다. VC6.0 VC++ 6.0 프로젝트에서 Visual Source Safe 삭제 방법 1) 프로젝트 폴더에 있는(하위폴더 포함) *.scc 파일을 모두 삭제 합니다. 보통 프로젝트 메인 폴더에 mssccprj.scc 파일이 있고, 각 폴더마다 vssver.scc 파일이 있습니다. 하위 폴더까지 이 파일이 있으니 검색을 통해서 모두 삭제하세요. 2) *.dsw 파일을 열어 Source Safe ..

멀티바이트, 유니코드 차이

출처 : http://blog.naver.com/wondo21c/30043174174 Visual Studio 2005 프로젝트 속성 ->구성속성을 보면 문자 집합으로 2가지를 사용할 수 있다. 1. 멀티바이트 문자 집합 2. 유니코드 문자 집합 아스키코드는 모든 문자 하나가 1byte를 차지한다. 하지만, 아스키 문자 코드 만으로는 한글이나 일어 등의 다른 문자를 표시할 수 없다. 그래서 아스키 문자 코드에다가 다른 문자(2byte)들을 포함한 문자 집합이 멀티바이트 문자 집합이다. 정확히는 모르겠지만, 한 문자가 2byte를 넘는 문자도 존재할 것이다. 그래서 용어 자체가 멀티바이트 문자 집합이 아닐까 생각한다. 그런데 멀티바이트 문자 집합은 특정 문자 집합마다의 코드페이지가 존재한다. 예를 들어, ..

visual stdio 200x 단축키 모음

VS2003 이후 버전의 단축키 코드 어시스트 : Ctrl + Space 파라미터 정보 어시스트 : Ctrl + Shift + Space 함수원형가기 : F12 함수선언가기 : Ctrl + F12 전체 소스코드 정리 : Ctrl + K + D 선택한 소스코드정리 : Ctrl + K + F 선언되지 않은 함수 자동으로 생성해주기 : Ctrl + K + M 주석처리 : Ctrl + K + C 주석해제 : Ctrl + K + U 한줄자르기 : Ctrl + L 짝따라가기 : Ctrl + ] 북마크 설정 : Ctrl + F2 북마크 해제 : Ctrl + Shift + F2 북마크 찾아가기 : F2 단어 찾기 : Ctrl + F 파일에서 문자찾기 : Ctrl + Shift + F 현재 커서 다음위치에서 찾기 : F..

Visual Studio C언어 디버그 모드 & 릴리즈 모드

프로젝트를 컴파일하여 실행 파일을 만드는 방법에는 디버그/릴리즈 두 가지가 있다. 디버그 빌드와 릴리즈 빌드에서 서로 실행 결과가 다른 경우, 특기 디버그 빌드에서는 괜찮은데 릴리즈 빌드에서만 오류가 발생하여 프로그램이 죽는 경우가 있는데 이런 경우는 대부분 메모리가 깨진 경우에 발생한다. 두 모드에서 동적으로 메모리를 할당하면 힙 영역에 요청한 크기만큼 메모리를 할당 받게 되는데 그 초기값이 다르다. 릴리즈 빌드의 경우 할당된 메모리 영역을 초기화하지 않는 경우 바로 할당되기 직전의 쓰레기 값이 그대로 사용되는 반면 디버그 빌드의 경우 디버거로 디버깅하는데 블록을 구분하기 위해 0xCC, 0xDD와 같은 값으로 초기화된다. 디버그 모드 실행 파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록..

visual studio 2013 break at function 조건부 디버깅

VS 6.0 버전에서는 Ctrl+B를 누르면 BreakPoint 를 조건부로 설정 할 수 있는 창이 나왔다. VS 2013에서도 마찬가지로 이 기능을 사용할 일이 있었다. 그래서 Ctrl+B를 누르니 아래와 같은 브레이크 포인트 설정 창이 나왔다. 하지만 Function 창에 조건식을 쓰고 브레이크를 걸어보니 중단점이 걸리질 않는다....이런.... 그리하여 디버그 창에서 한참을 찾다가 찾지 못하여 검색을 해보니 MSDN에서는 다음과 같이 권장을 한다. https://msdn.microsoft.com/ko-kr/library/wyakk529(v=vs.100).aspx 마우스 우클릭......을 하라고 한다. 너무 간단하게 나오네...메뉴바에 좀 넣어 놓지 한참을 찾았다.... 마우스 우클릭 -> Brea..

Visual Studio 2013 _CRT_SECURE_NO_WARNINGS 경고 없애기

VS 2013 에서 fopen / strcpy / scanf 와 같은 VS6.0에서의 함수를 사용하려고 하면 Error 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 와 같은 에러 메세지가 나온다. fopen, strcpy 계열의 함수는 보안을 문제로 VS 200x 버전부터 사용을 권하지 않고 strcpy_s 와 같이 사용을 권장하고 있다. 하지만 이 함수를 필요로 한다면 아래와 같이 Define을 해주면 사용할 수 있다. 1. Pro..

visual studio 200x 버전 C4996 경고

http://cafe.naver.com/cafec/307168 _CRT_SECURE_NO_WARNINGS 이 경고는 Visual C++ 2005 버전부터 만들어졌습니다. 이전 라이브러리에서 보완에 취약한 부분을 보완해서 _s가 붙은 라이브러리로 대체를 해야 한다는 뜻입니다. [방법1] 소스코드 첫 부분에 #define _CRT_SECURE_NO_WARNINGS 이렇게 한 줄을 추가하면 _s가 없는 것이 _s가 있는 것으로 자동으로 맵핑이 된다고 합니다. [방법2] 소스코드 첫 부분에 #pragma warning(disable:4996) 이 줄을 추가하면 컴파일러가 경고를 내지 못하게 하는 역할을 합니다. [방법3] 프로젝트 속성에서 왼쪽 C/C++ 항목에서 전처리기에 있는 전처리기 정의에 _CRT_SEC..

c언어 한글코드 확인 방법( & 0x80)

출처 : http://blog.daum.net/natural_feel/4788772 0x80 에 대하여 ((c & 0x80)에 대하여) 0x80은 아래의 조건식에서 왜 사용되었을까라는 의문을 가지게 되면서 찾아보았다. ((c & 0x80) != 0) 위의 식은 임의의 문자 C(알파벳 c가 아닌 변수명이다)가 한글인지 아닌지를 판단하는 조건식의 일부이다. c & 0x80 이 0이라면, 한글이 아닌것이고 0이 아니라면 한글인것이다. 참고 : & 연산자 ( a & b 은 같은자리의 비트가 둘다 1일때 그 자리에 1을 표시한다, a는 1000 b는 1110 이라면 a&b는 1000이 된다) 한글코드는 0x80 이상의 값을 가지고 있다. 0x80을 2진수로 바꾸주면 1000 0000 이 된다. 연산자 &를 사용해..

함수 포인터 / typedef 선언 함수 포인터

출처: http://ingorae.tistory.com/483 함수를 포인터로 받는 방법이다. 우선 함수포인터의 쓰는 방법 부터 보자. int test(int num){ printf("input num is %d.\n", num); } int main() { int (*testptr)(int); testptr = test; testptr(100); } 위의 코드에서와 같이 호출하고자 하는 함수 이름 대신에 별표(*) 포인터변수를 적어주면된다. 리턴타입 + (* 함수포인터 변수) ( 함수 인자 타입, .... ) 그럼 왜 typedef 함수 포인터를 선언하는가? 예제에서와 같이 int (*testptr)(int); 식으로 적어서 함수포인터 변수를 선언하면 되는데 매번 이런식으로 적으면 코드가 길어지기도 하..

반응형