'Visual Studio'에 해당되는 글 2건

  1. 2012.11.19 [단축키] Visual Studio 6.0 by 당신은 천하보다 귀중합니다. av930
  2. 2008.09.22 [Visual C++] Error Msg by 당신은 천하보다 귀중합니다. av930 (2)

 조금은 오래된 tool을 posting하려고 한다. 최근 version도 있지만, 그래도 아직도 .net환경으로 이사오지 않은 개발자들이 꽤 있는듯하여 작은 핑계를 삼아  포스팅을 하려고 한다. 최근 나 역시도 Visual Studio 2008로 이사를 했다. 2010이 쓰고 싶지만 아직 license가 없다. 그런데 참고로 알아둘 것은 2008에서 단축키를 대폭 수정했다는 것이다. Old version 호환키가 존재하긴 하나 제대로 안 되는 것 같다. 사실 처음엔 속으로 이래도 되나 싶을 정도로 MS 애들이 짜증이 났다.

   

MS 애들이 사실 이렇게 shortcut integration을 등한시 한 건 office 군에서도 쉽게 찾아볼 수 있다. Powerpoint2010에서 서식 복사는 Ctrl + Shift + C, 서식붙이기는 Ctrl + Shift + V가 되겠다. 그러나 excel 2010에서는 서식복사 단축키가 이렇게 지원되지 않는다. (참고로 빠른 실행도구 모음으로 등록해서 쓰면 편하다.). 하나의 회사에서 군으로 출시하는 제품에 대한 detail이 참으로 떨어진다. 잡은 물고기에 밥을 주지 않으려는 MS의 오랜 습관 때문인지…

그래도 Visual Studio 2008에서 좋아진 것은 VI나 emacs그리고 다른 editor의 short-cut mapping이 지원된다는 점이다. 다음에 시간이 된다면 한번 정리해 보기로 하고 오늘은 오랜 친구인 visual studio 6.0에 대해서만 이야기 하자. 

Visual Studio에서 개발해본 사람은 그 편의성과 안정성 때문에 다른 tool로 이사 가기 힘들다. 특히 eclipse나 뭐 이런.. 종류.. 요즘 Android가 대세라서 eclipse를 대부분 사용하고 있는데, 가끔은 tool때문에 C#으로 가고 싶을 정도다.

     

그럼 이만 각설하고 Visual C++ 6.0의 단축키를 알아보자.

대분류

    

단축키

    

    

    

설명

   

   

   

   

   

   

   

    

    

    

    

    

    

    

   

   

   

   

   

   

   

Visual C++

   

   

   

   

   

   

   

   

   

   

   

   

편집

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

F8

   

ULTRA EDIT의 COLUMN MODE

   

   

   

   

   

   

   

ALT+

마우스

   

"

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

L

   

한 라인 잘라내기(cut)

   

   

   

   

   

   

   

CTRL+

SHIFT+

L

   

한 라인 삭제

   

   

   

   

   

   

   

   

CTRL+

   

delete

   

단어 단위로 삭제

   

   

   

   

   

   

   

CTRL+

   

backspace

"

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

ALT+

F8

   

자동 indentation(블럭지정후 사용)

   

   

   

   

   

블록설정

TAB

   

들여쓰기

   

   

   

   

   

   

   

   

블록설정

SHIFT+

TAB

   

내어쓰기

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

U

   

대문자로(블럭지정후 사용)

   

   

   

   

   

   

CTRL+

SHIFT+

T

   

공백/콤마/파이프/괄호 등을 기준으로 좌우 문자열을 Swap시킴

   

   

CTRL+

SHIFT+

8

   

TAB, SPACE 구별하여 화면에 보여주기

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

space

   

입력할 parameter type을 미리 보여준다

   

   

   

   

   

CTRL+

   

T

   

현재 커서에 있는 변수/함수에 대한 Type이 Tooltip 힌트 창에 나타남

   

   

CTRL+

ALT+

T

   

멤버 변수/함수 목록에 대한 팝업 창이 나타남

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

R

   

매크로 명령 저장 시작과 끝

   

   

   

   

   

   

CTRL+

SHIFT+

P

   

매크로 명령 수행

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

이동

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

F4

   

현재 Edit하고 있는 Child Window를 닫기

   

   

   

   

   

CTRL+

   

TAB

   

이전창

   

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

TAB

   

반대로

  

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

좌우방향키

단어단위로 이동

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

좌우방향키

단어단위로 블록설정

   

   

   

   

   

   

   

CTRL+

   

상하방향키

커서는 제자리에 있고 화면만 스크롤

   

   

   

   

   

CTRL+

   

[, ]

   

상대 괄호 찾기

   

   

   

   

   

   

   

   

CTRL+

   

E

   

"

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

D

   

찿기창 바로가기

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

T

   

콤마, 세미콜론, 파이프, 공백, 괄호등을 기준하여 양쪽의 문자열을 swap시켜줌

   

   

   

   

   

   

   

   

   

   

   

   

   

   

검색

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

F

   

단어 찾기(원하는 단어위에 놓고 명령 실행하면 바로 찾습니다.)

   

   

CTRL+

   

I

   

문자열 입력 점진적으로 문자열 찾기 (Incremental Search)

   

   

   

CTRL+

   

H

   

바꾸기

   

   

   

   

   

   

   

   

   

CTRL+

   

G

   

goto line

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

F3

   

현재 커서에 있는 문자열 찾기 fowared (블록 지정 안 해도 됨)

   

   

   

   

F3

   

찾은 문자열에 대한 다음 문자열로 이동 (Next Search)

   

   

   

   

SHIFT+

F3

   

현재 커서에 있는 문자열 찾기 backward

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

ALT+

E + I

O

Find in Files기능이 됨.(단어위에 놓고 실행하면 바로 찾을수있음)

   

   

   

   

F4

   

전체찾기에서 찾은항목 바로가기

   

   

   

   

   

   

   

SHIFT+

F4

   

반대로

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

J

   

#ifdef와

   

   

   

   

   

   

   

   

CTRL+

   

K

   

#endif 찾기(기능 약함)

   

   

   

   

   

   

   

CTRL+

SHIFT+

J

   

#ifdef와

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

K

   

#endif 찾아 블럭잡기

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

F2

   

북마크 지정/해제

   

   

   

   

   

   

   

   

SHIFT+

F2

   

반대로

   

   

   

   

   

   

   

   

   

   

   

F2

   

북마크 찾아가기

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

F2

   

전체해제

   

   

   

   

   

   

   

   

CTRL+

ALT+

T

   

사용가능한 함수/변수가 팝업창 형태로 display됨

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

보기및 디버깅

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

ALT+

V + U

   

전체창으로 보기

   

   

   

   

   

   

   

   

   

   

ESC

   

다른 창에 있는 경우 EDITING 창으로 이동

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

ALT+

0

   

WORK SPACE (파일, 클래스, 리소스 브라우져) 선택

   

   

   

   

   

   

   

   

클래스,리소스,파일view 이동시 CTRL + pageup/down

   

   

   

   

ALT+

2

   

Output window

   

   

   

   

   

   

   

   

   

ALT+

3

   

Watch

   

   

   

   

   

   

   

   

   

   

ALT+

4

   

Variable

   

   

   

   

   

   

   

   

   

ALT+

5

   

Register

   

   

   

   

   

   

   

   

   

ALT+

6

   

Memory

   

   

   

   

   

   

   

   

   

ALT+

7

   

CALL STACK

   

   

   

   

   

   

   

   

   

ALT+

8

   

DisAssembly

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

W

   

클래스 위자드

   

   

   

   

   

   

   

   

CTRL+

   

F5

   

build and go

   

   

   

   

   

   

   

   

   

   

F5

   

no build and go

   

   

   

   

   

   

   

   

SHIFT+

F5

   

디버깅모드 종료

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

F9

   

break point 등록 해제

   

   

   

   

   

   

   

CTRL+

SHIFT+

F9

   

break point 전체 해제

   

   

   

   

   

   

   

CTRL+

   

B

   

break point list 보기

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

   

F10

   

run to cursor

   

   

   

   

   

   

   

   

   

   

F10

   

step over

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

F11

   

step into

   

   

   

   

   

   

   

   

   

SHIFT+

F11

   

step out

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

F7

   

active project 컴파일

   

   

   

   

   

   

   

CTRL+

   

F7

   

현재 파일만 컴파일

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

메뉴키+

H

   

해당 창닫기

   

   

   

   

   

   

   

   

   

   

   

   

(닫기 원하는 창에서 메뉴키를 누른 후 H(Hide) 를 누르면 된다. )

   

   

   

   

   

   

   

   

   

   

   

   

   

   

Visual Assist

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

ALT+

g

   

go to definition

   

   

   

   

   

   

   

   

   

ALT+

m

   

현재 파일의 함수 리스트

   

   

   

   

   

   

   

   

ALT+

<-, ->

   

이전 커서 위치하는곳

   

   

   

   

   

   

   

   

ALT+

Q

   

해당 C와 H 파일 전환

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

CTRL+

SHIFT+

v

   

클립보드로 저장, 여러 개 가능

   

   

   

   

   

   

CTRL+

   

space

   

자동완성기능, 완성 symbol 선택가능

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

그럼 누군가에게 도움이 되었길 바랍니다. (jesus loves you)

Posted by 당신은 천하보다 귀중합니다. av930

댓글을 달아 주세요

[Visual C++] Error Msg

Language 2008. 9. 22. 22:51

C CPP CompilerErrorMessageAndErrorSolution

C / C++ Compiler Error Message And Error Solution

C / C++ 컴파일러에서 내뱉는 error, warning메세지에 대한 해결법정리, 컴파일러의 버전별이나 라이브러리 별로 정리되어 있다.

Solution

MSVC 6.0, 7.0

C4121: alignment of a member was sensitive to packing

클래스의 데이터멤버의 포인터를 사용하는 경우, 클래스의 멤버함수의 포인터를 받는 변수를 사용한다던지 할때 레벨4에서 나는 워닝이다. 이에 따른 솔루션은 당연히 안쓰는 것이 좋지만 사용하는 경우 다음과 같은 Pragma Directives를 선언함으로서 워닝을 제거 할 수 있다.

각 해당 포인터를 사용하는 멤버에 대한 상속방법등을 정확히 알지 못하기 때문인데. 옵션에 따라 상속종류 별로 처리 할 수 있다.

In this case, the compiler has to guess how to implement the member pointer for the kind of inheritance the class is using and gives out a warning.

With Visual C++, you get this warning if you compile on the highest warning level. It's possible to "inform" the compiler about what kind of class inheritance is used with the #pragma pointers_to_members directive and resolve the warning problem.

@TODO 옵션정리!

다음과 같이 멤버함수의 포인터를 사용하는 곳에 적용한다.

//   Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )

참고 : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_predir_pointers_to_members.asp

C2332: 'class' : missing tag name

class 후에 tag가 없어서 나는 에러인데. 실제 없어서 나는 에러보다는 미리 #define되어 있는 값과 동일 한경우 대체 되어서 전혀 다른 상수값이 되어 버릴수도 있따.

#define SOME_CLASS 0

class SOME_CALSS // 얼씨꾸?
<code>

==== C4003: not enough actual parameters for macro =====
특이사항. template코드에서 다음과 같은 코드를 작성시에 typename에 언더라인(_)을 붙이면 다음과 같은 워닝이 뜬다. 그래서 다음과 같이 바꿈
<code>
template <typename T>
class Class
{
template <typename _T>
class Class
{
public:
        T* Alloc()
        {
                PVOID _pV = NULL;
                
                if (is_notnull(_pV))
                {
                        return new (typename _pV) _T(); // 여기 .. _T를 T로 변경
                }
        }
};

C4346: dependent name is not a type

MSVC .NET이후에 typedf나 template안에서 같이 형으로 간주되는 경우(미정의경우)의 선언시에는 반드시 typename이 들어가야한다. 이것이 ISO C++표준이다.

// template코드 내에서 iterator를 쓸경우 형이 지정된 상태가 아님으로 typename으로 써야 한다.
typename _T::iterator _itr = find(begin(), end(), _Key);

// C4346.cpp
// compile with: /WX /LD
template<class T>
struct C {
   T::X* x;   // C4346
   // try the following line instead
   // typename T::X* x;
};

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcerrCompilerWarningLevel1C4346.asp

R6025 Pure virtual function call

Debug 경고창에 나오는 에러 메세지로 디버깅시에 _purecall이라는 함수에서 경고를 내는데 이유는 virtual function을 사용하는 클래스의 인스턴스가 올바르지(존재하지않는겨우 소멸의 경우)않아서 이다. 베이스 클래스가 순수가상함수이고 그 함수를 호출할려고 할때 올바른 상속클래스의 인스턴스가 없는 경우이다.

void* ThreadFunc(void* pArgs)
{
      pSomeBaseInstance->ExecutePureVirtualFunction();
}

void SomeOtherThreadFunc()
{
     SomeDerivedClass Class;
     beginthread(ThreadFunc(&Class));
     // 해당 인스턴스는 사라졌다.
}

C1083: Cannot open include file: 'xmldom.idl': No such file or directory

idl이 빠진경우로 internet development sdk를 다운로드하면 된다

C2064: term does not evaluate to a function(taking 'number' arguments)

함수로 사용할수 없는 형이나 상태의 함수(클래스의 멤버함수)를 호출한다는 의미이다. 멤버 함수를 함수 포인터로 넘기거나 keyword를 함수이름으로 했을때 생긴다. 멤버함수의 포인터를 typedef등을 해서 넘길경우 묵시적인 this포인터가 있음에도 생략해서 호출하기 때문이다. static이나 global의 경우는 상관없다. 잘 살펴보자.

int i, j;
char* p;
void func()
{
   j = i();    // C2064, i is not a function
   p();        // C2064, p doesn't point to a function
}

class C {
public:
     func();
};

void caller_func(C::*pfn()) {
     pfn(); // error C2064
}

int main() {
    caller_func(&C::func());
}

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/C2064.asp

C1010: unexpected end of file while looking for precompiled header directive

주로 MFC에서 pre-compiled파일인 stdafx.h를 기본적으로 header파일에서 include해야하는데 .NET의 경우 Win32프로젝를 생성하더라도 pre-compiled 셋팅을 필요로 하고 header파일의 경우 이를 include해야한다. 혹은 다음과 같은 절차를 거쳐서 셋팅을 변경한다.

1. 솔루션 탐색기에서 프로젝트를 선택하여 속성창을 뛰운다.
2. 왼쪽팬에서 C/C++폴더를 선택하고
3. Precompiled Header노드를 선택한다.
4. 오른쪽팬에서 Create/Use Precompiled Header에서 Not Using Precompiled Headers을 선택을 한다.
Posted by 당신은 천하보다 귀중합니다. av930

댓글을 달아 주세요

  1. KBS 2012.02.20 15:54  댓글주소  댓글쓰기 수정/삭제

    C2332 에러로 고생하고 있었는데 Oasis님 덕분에 해결했습니다. 정말 감사합니다 ^^

  2. 2013.09.12 00:10  댓글주소  댓글쓰기 수정/삭제

    비밀댓글입니다