광고 수익은 기아대책 서울본부에 기부합니다.

2011. 12. 9. 10:23 윈도우/참고
C/C++ 컴파일러는 표준에 적합하면서도 각 벤더들만의 확장 기능이 있는데, MSVC 컴파일러에는 있는 유용한 extension들을 살짝 들여다 보자. 기억이 맞는다면 Visual Studio .NET (7.0) 부터 지원된 기능들이다. 안타깝게도 gcc에서는 아래 기능들이 지원이 안 되는 것 같다. 그러나 반대로 MSVC에서 지원하지 않는 gcc의 재밌는 키워드 __builtin_expect도 있다.
1. __super
이름에서 말하듯이 자신의 base-class를 가리키는 키워드이다. 예를 들어, overriding한 method에서 상위 클래스의 구현을 호출하고 싶으면 항상 그 상위 클래스이름::메소드이름을 사용했어야 하는데 이 키워드로 그런 불편함을 덜 수 있다 (첫 번째 예제 코드는 MSDN에서 발췌).
// deriv_super.cpp
// compile with: /c
struct B1 {
   void mf(int) {}
};
struct B2 {
   void mf(short) {}
   void mf(char) {}
};
struct D : B1, B2 {
   void mf(short) {
      __super::mf(1);     // Calls B1::mf(int)
      __super::mf('s');   // Calls B2::mf(char)
   }
};
String XEntity::GetPropertyCore(PCPROPERTY pProperty) throw(...)
{
// No overriden behaviors
return __super::GetPropertyCore(pProperty);
}
void XEntity::SetPropertyCore(PCPROPERTY pProperty, ARGString strValue) throw(...)
{
// No overriden behaviors
__super::SetPropertyCore(pProperty, strValue);
}
2. __if_exists, __if_not_exists
__super는 비교적 자주 쓸 수 있는 반면, 이 키워드는 그렇게 많이 쓰이지는 않을 것이다. 이 키워드는 특정 심볼이 컴파일 할 때, 존재하는지를 알려준다. 말 그대로 컴파일러 심볼 테이블에 있는 identifier인지를 확인 해주는 기능이다 (코드는 MSDN에서 발췌).
template
class X : public T {
public:
   void Dump() {
      std::cout << "In X::Dump()" << std::endl;
      __if_exists(T::Dump) {
         T::Dump();
      }
      __if_not_exists(T::Dump) {
         std::cout << "T::Dump does not exist" << std::endl;
      }
   }  
};한 마디로 #ifdef와 유사한 기능이라고 볼 수 있다. 그러나 단순히 identifier가 아닌 클래스 멤버 변수 유무까지 알 수 있으니 상당히 유용한 경우가 많다. 특히 매크로 작성시 정말 강력한 기능을 제공할 수 있다. 자세한 매크로 예를 다 들자면 너무 복잡하고, 예를 들어, 어떤 함수가 있을 경우에만 특정 코드를 만들어주는 #define을 만들 때 상당히 유용하다. #define 안에서는 #ifdef와 같은 것을 쓸 수가 없기 때문이다. 물론 #ifdef에 따라 #define을 해줘도 되지만 불편한 경우가 많다
#define XCOMP_INIT(object_type){                        \
    __if_exists (X##object_type::CreateObject){         \
        X##object_type* _p = new X##object_type;        \
        _p->SetTypeInfo(ObjectType::object_type);       \
        __if_exists (X##object_type::CreatePropertyMap){\
            _p->CreatePropertyMap();                    \
        }                                               \
        __if_exists (X##object_type::CreateEventMap){   \
            _p->CreateEventMap();                       \
        }                                               \
        __if_exists (X##object_type::CreateMethodMap){  \
            _p->CreateMethodMap();                      \
        }                                               \
        delete _p;                                      \
    }                                                   \
}                                                       \부록) 여러 줄에 걸친 매크로 작성시 특히 주의 해야 할 점: '\'를 이용해서 line break를 할 수 있는데, 절대 '\' 뒤에 whitespace가 와서는 안 된다. 이 경우 친절하게 "error C2014: preprocessor command must start as first nonwhite space" 에러가 뜨는 경우도 있지만, 아주 고약한 에러가 떠서 에러를 찾는데 고생할 수 있다. 이럴 때, Visual Studio 에디터의 경우에는 [Ctrl+Shift+8]을 눌러 whitespace를 확인해봄으로써 쉽게 확인할 수 있다. 아래 그림의 경우 첫 번째 줄에서 \뒤에 공백이 하나 들어가있음을 볼 수 있다.


출처 : http://minjang.egloos.com/1352950
posted by Town One townone

댓글을 달아 주세요

2011. 12. 5. 16:49 윈도우/참고

아래 프로그램을
Mits Store > Nate 폴더에 넣고 설치 하면 폰 내부 Sync 프로그램이 꼬였을때 (버젼이 더 높다)재설치가 이루어져 해결 될 수 있다.


또는 무선 네트워크 또는 기타 연결을 사용 안함으로 설정 하면 연결 될 수 있다.
posted by Town One townone

댓글을 달아 주세요

2011. 11. 28. 16:20 윈도우/참고
fatal error C1083 오류는 해당 파일을 경로에서 찾을 수 없어 열지 못하였기 때문에 발생 합니다.
분명히 경로 오류이기때문에 상대 경로로 맞춰 줍니다.
posted by Town One townone

댓글을 달아 주세요

2011. 11. 25. 15:17 윈도우/참고

#ifdef _DEBUG
#define new DEBUG_NEW // 메모리 릭 발생 시 릭이 일어난 파일의 이름과 행을 표시 해준다.
#undef THIS_FILE             // THIS_FILE 이 정의 되어 있으면 재 정의 하는 구문
static char THIS_FILE[] = __FILE__; // static 이 없으면 cpp 파일에서 다른 cpp 파일 인클루드시 분별 할 수 없음
#endif

* 위 구문 추가시 오류가 난다면 밑에 줄에 #include 문이 있는지 확인 - 없어야 한다.
* 헤더 파일에 클래스 끝에 ';' 안붙였는지 확인 - 엉뚱한 곳에서 에러가 난다.
posted by Town One townone

댓글을 달아 주세요

2011. 11. 23. 17:41 윈도우/참고

http://blog.naver.com/minjooon123/10122603703

'윈도우 > 참고' 카테고리의 다른 글

fatal error C1083  (0) 2011.11.28
THIS_FILE, DEBUG_NEW  (0) 2011.11.25
리버스엔지니어링 예제 - 참고 UPX1 실행 압축 풀기  (0) 2011.11.23
리버스 엔지니어링 예제  (0) 2011.11.23
Visual Studio C++ 2010 단축키  (0) 2011.11.23
Visual Studio C++ 2008 단축키  (0) 2011.11.23
posted by Town One townone

댓글을 달아 주세요

2011. 11. 23. 17:18 윈도우/참고

http://blog.naver.com/minjooon123?Redirect=Log&logNo=10122806181
posted by Town One townone

댓글을 달아 주세요

2011. 11. 23. 14:06 윈도우/참고


'윈도우 > 참고' 카테고리의 다른 글

리버스엔지니어링 예제 - 참고 UPX1 실행 압축 풀기  (0) 2011.11.23
리버스 엔지니어링 예제  (0) 2011.11.23
Visual Studio C++ 2010 단축키  (0) 2011.11.23
Visual Studio C++ 2008 단축키  (0) 2011.11.23
Visual Studio C++ 2005 단축키  (0) 2011.11.23
error LNK2019  (0) 2011.11.21
posted by Town One townone

댓글을 달아 주세요

2011. 11. 23. 12:21 윈도우/참고

F12 // 함수원형으로 가기

Ctrl + F12 // 함수 선언으로 가기

Ctrl + K + C // 주석처리

Ctrl + K + U // 주석해제

Shift + Alt + Enter // 전체화면, 보통 화면

Ctrl + M + M // 함수숨기기(한줄로)

Ctrl + Spacebar // 함수, 매개변수 리스트

Ctrl + U // 선택된 문자 소문자로

Ctrl + Shift + U // 선택된 문자 대문자로

Alt + F7 // 프로젝트 속성

Ctrl + L // 한줄 자르기

Ctrl + -> // 다음문자로 이동

Ctrl + <- // 이전문자로 이동

Ctrl + G // 라인 찾아 이동

Ctrl + ] // 짝 따라가기


F2 // 북마크 찾아 가기

Ctrl + F2 // 북마크 설정

Ctrl + Shift + F2 // 북마크 해제


찾기

Ctrl + F // 찾기

F3 // 현재 커서 다음 위치에서 찾음

Shift + F3 // 현재 커서 이전 위치에서 찾음

Ctrl + H // 찾아서 바꾸기(단어바꾸기)

Ctrl + i // 아래 방향으로 단어 찾기

Ctrl + Shift + i // 위 방향으로 단어 찾기

Ctrl + F3 // 선택한 문자열 찾기(커서 다음)

Ctrl + Shift + F3 // 선택한 문자열 찾기(커서 이전)

디버깅

F5 // 디버깅시작, 다음브레이크포인트까지 실행

F9 // breakpointer

Ctrl + Shift + F9 // 모든 브레이크 포인터 해제

F10 // 한줄씩 실행

F11 // 함수프로시저안까지 실행

Shift + F5 // 디버깅 종료

빌드, 실행

F7 // 빌드

Ctrl + Break // 빌드 중지

Ctrl + F5 // 디버깅하지 않고 실행

Ctrl + F7 // 빌드, 컴파일

출처 : http://blog.naver.com/nottrue33/30102691307
PDF 파일

'윈도우 > 참고' 카테고리의 다른 글

리버스 엔지니어링 예제  (0) 2011.11.23
Visual Studio C++ 2010 단축키  (0) 2011.11.23
Visual Studio C++ 2008 단축키  (0) 2011.11.23
Visual Studio C++ 2005 단축키  (0) 2011.11.23
error LNK2019  (0) 2011.11.21
The connection with the server was reset  (0) 2011.11.18
posted by Town One townone

댓글을 달아 주세요

2011. 11. 23. 10:33 윈도우/참고

 

단축키
설명
Ctrl + Shift + N
프로젝트 새로 만들기
Ctrl + N
파일 새로 만들기
Ctrl + Shift + O
프로젝트/솔루션 열기
Ctrl + O
파일 열기
Ctrl + S
저장
Ctrl + Shift + S
모두 저장
Ctrl + P
인쇄
Ctrl + Z
Undo
Ctrl + Y
Redo
Ctrl + X
Cut
Ctrl + C
Copy
Ctrl + V
Paste
Ctrl + Shift + Ins
클립보드 링 순환
Del
Delete
Ctrl + A
Select All
Ctrl + F
Find
Ctrl + H
Replace
Ctrl + Shift + F
파일에서 찾기
Ctrl + Shift + H
파일에서 바꾸기
Ctrl + Shift + Y
기호 찾기
Ctrl + G
Go To
Ctrl + K, Ctrl + F
선택 영역 서식
Ctrl + Shift + U
대문자로
Ctrl + U
소문자로
Ctrl + K, Ctrl +
가로 공백 삭제
Ctrl + R, Ctrl + W
공백 보기
Ctrl + E, Ctrl + W
자동 줄 바꿈
Ctrl + I
증분 검색(Incremental Search)
Ctrl + K, Ctrl + C
선택 영역을 주석으로 처리
Ctrl + K, Ctrl + U
선택 영역의 주석 처리 제거
Ctrl + K, Ctrl + K
책갈피 설정/해제
Shift + F2
이전 책갈피
F2
다음 책갈피
Ctrl + K, Ctrl + L
책갈피 지우기
Ctrl+Shift+K, Ctrl+Shift+P
폴더의 이전 책갈피
Ctrl+Shift+K, Ctrl+Shift+N
폴더의 다음 책갈피
Ctrl + K, Ctrl + H
작업 목록 바로 가기 추가
Ctrl + M, Ctrl + H
선택 영역 숨기기
Ctrl + M, Ctrl + M
개요 확장/축소
Ctrl + M, Ctrl + L
전체 개요 표시/숨기기
Ctrl + M, Ctrl + P
개요 표시 중지
Ctrl + M, Ctrl + U
현재 숨기기 중지
Ctrl + M, Ctrl + O
정의 부분만 보이기
Ctrl + J
멤버 목록
Ctrl + Shift + SpaceBar
매개 변수 목록
Ctrl + K, Ctrl + I
요약 정보
Alt +
단어 자동 완성
Ctrl + Alt + 0
코드
Ctrl + Alt + L
솔루션 탐색기
Ctrl + K, Ctrl + W
책갈피 창
Ctrl + Shift + C
클래스 뷰
Ctrl + Shift + V
코드 정의 창
Ctrl + Alt + J
개체 브라우저
Alt + 2
출력
Ctrl + Shift + E
리소스 뷰
Ctrl + Alt + X
도구 상자
Shift + Alt + Enter
전체 화면
Ctrl + -
뒤로 탐색
Ctrl + Shift + -
앞으로 탐색
Ctrl + Alt + Y
기호 찾기 결과
Ctrl + Alt + A
명령 창
Ctrl + Alt + D
문서 개요
Ctrl + , Ctrl + E
오류 목록
Alt + Enter
속성 창
Ctrl + Alt + S
서버 탐색기
Ctrl + , Ctrl + T
작업 목록
Ctrl + Alt + R
웹 브라우저
Ctrl + Shift + A
새 항목 추가
Shift + Alt + A
기존 항목 추가
Alt + F7
속성
F7
솔루션 빌드
Ctrl + Alt + F7
솔루션 다시 빌드
Ctrl + F7
컴파일
Alt + F9
중단점 창 보이기
Ctrl + Alt + I
직접 실행 창 보이기
F5
디버깅 시작
Shift + Alt + F5
응용 프로그램 검증 도구로 시작
Ctrl + F5
디버깅하지 않고 시작
Ctrl + Alt + E
예외
F11
한 단계씩 코드 실행
F10
프로시저 단위 실행
F9
중단점 설정/해제
Ctrl + Shift + F9
모든 중단점 삭제
Ctrl + B
함수에서 중단
Ctrl + Alt + P
프로세스에 연결
Ctrl + K, Ctrl + B
코드 조각 관리자
Ctrl + Shift + P
TemporaryMacro 실행
Ctrl + Shift + R
TemporaryMacro 저장
Alt + F11
매크로 IDE
Ctrl + F1
어떻게 할까요?
Ctrl + Alt + F3
검색
Ctrl + Alt + F1
목차
Ctrl + Alt + F2
색인

Visual Assist 단축키
단축키
설명
Alt + Shift + O
Open File in Workspace
Alt + O
Open Corresponding .h or .cpp
Alt + M
List Methods in Current File(현재 파일의 모든 함수 목록)
Shift + Alt + S
Find Symbol
Alt + G
Go to Implementation(현재 커서의 함수 정의 부분으로 이동)
Ctrl + Shift + V
클립보드에서 선택해서 붙여 넣기(Multiple Clipboards)
Alt +
Navigate Back(이전 커서 위치로 이동)
Alt +
Navigate Forward(다음 커서 위치로 이동)
Alt +
Move to the previous method
Alt + ↓
Move to the next method
PS. VS2005 단축키는 대부분 VS2008에서도 작동 됩니다.

원문 : http://kindtis.tistory.com/7

'윈도우 > 참고' 카테고리의 다른 글

리버스 엔지니어링 예제  (0) 2011.11.23
Visual Studio C++ 2010 단축키  (0) 2011.11.23
Visual Studio C++ 2008 단축키  (0) 2011.11.23
Visual Studio C++ 2005 단축키  (0) 2011.11.23
error LNK2019  (0) 2011.11.21
The connection with the server was reset  (0) 2011.11.18
posted by Town One townone

댓글을 달아 주세요

2011. 11. 21. 11:48 윈도우/참고
* error LNK2019 링크 오류가 났을때 체크 사항

ex)
1>CxImageD.lib(ximapng.obj) : error LNK2019: _png_read_end 외부 기호(참조 위치: "public: bool __thiscall CxImagePNG::Decode(class CxFile *)" (?Decode@CxImagePNG@@QAE_NPAVCxFile@@@Z) 함수)에서 확인하지 못했습니다.

1) 추가 종속성에 LIB 링크 했는지 확인

속성페이지에서 추가 종속성에 lib 파일을 링크 했는지 확인 한다.
또는 아래와 같이 직접 소스에 링크 하는 방법도 있다.

#ifdef _DEBUG
#pragma comment(lib, "CxImageD.lib")
#else
#pragma comment(lib, "CxImage.lib")
#endif


* 각 라리브러리가 프로젝트로 되어 있다면 추가 종속성에 추가 할 필요 없고 프로젝트 종속성을 맞춰 주면 자동으로 링크 된다. 이런 경우에도 가끔 LNK2019 오류가 발생 한다.

2) 프로젝트에 헤더 파일(~.h)과 구현 파일(~.cpp)을 추가 했는지 확인

3) 함수 선언 하고 구현 하지 않았는지 확인

*4) inline 이나 template 을 사용할 경우 헤더와 구현을 다른 파일로 분리 하였는지 확인
    - 분리하지 말고 하나의 파일로 구현 한다. 
    - 실제 오류는 다른 파일에 있다.

5) c 또는  cpp 처럼 확장자가 다른지 확인
    - 확장자를 하나로 통일 시킨다.


참고 : http://sadiles.blog.me/10072075057

'윈도우 > 참고' 카테고리의 다른 글

리버스 엔지니어링 예제  (0) 2011.11.23
Visual Studio C++ 2010 단축키  (0) 2011.11.23
Visual Studio C++ 2008 단축키  (0) 2011.11.23
Visual Studio C++ 2005 단축키  (0) 2011.11.23
error LNK2019  (0) 2011.11.21
The connection with the server was reset  (0) 2011.11.18
posted by Town One townone

댓글을 달아 주세요