VisualStudio 는 Microsoft 에서 개발한 Windows용 IDE 환경이다. 이 환경에서는 Visual C++, Visual Basic, Visual C# 등 여러 언어의 개발환경이 함께하며, 최신 버전은 [Visual Studio] 2012이다. == 연혁 == * 1998.06 Visual Studio 6.0 * 2002.02 Visual Studio .Net * 2005.11 Visual Studio 2005 * 2007.11 Visual Studio 2008 * 2010.04 Visual Studio 2010 * 2012.09 Visual Studio 2012 DeleteMe) .net 2005 beta3 까지 본것 같은데... DeleteMe) .net 2005 발매기념 대규모 행사(설명, 시연, 세미나)가 예정에 있습니다. 사전 신청을 받더군요. 11월에는 확실히 나올듯. ---- 학교에서는 2008년까지 Visual C++ 6.0을 많이 사용했으나 홍병우 교수님이 Visual Studio 2008 사용을 권한 이후로 최신 버전 환경이 갖추어졌다. VisualC++ 6.0은 VS.NET 계열에 비하여 상대적으로 버그가 많다. 가끔 IntelliSense 기능이 안될때가 많으며 클래스뷰도 깨지고, 전체 재 컴파일을 필요로하는 상황도 많이 발생한다. ( 혹시, Debug Mode에서 돌아가다가, Release Mode에서 돌아가지 않는 경우도 있는데 보통 이는 프로그램에서 실수 태반이다. 그러나 간혹 높은 최적화로 인해 돌아가지 않을때도 있을 수 있다. ) VisualStudio 를 사용할때 초기 프로그래밍 배울때 익혀두어야 할 기능들로, Debugger 사용, [Profiling], Goto Definition == Bug == === Class View 가 안나올때 === === IntelliSense 기능이 제대로 작동하지 않을때 === 일단 프로젝트를 닫는다. 일단 xxx.ncb 화일을 삭제해준 뒤 다시 프로젝트를 열어준다. VisualAssist 를 사용한다면, Code Re-Parsing 기능을 실행해준다. == pragma once == C++ 에서는 자바에서의 import 의 명령과 달리 해당 헤더화일에 대한 pre-processor 의 기능으로서 'include' 를 한다. 그러다 보니 해당 클래스나 함수 등에 redefinition 문제가 발생한다. 이를 방지하는 방법으로 하나는 #ifndef - #endif 등의 명령을 쓰는것이고 하나는 pragma once 이다. 다음은 예제를 참조. {{{~cpp #ifndef _CBOARDBASE_H_ // _CBOARDBASE_H_ 가 preprocessor 로 선언되지 않았을 경우 추가된다. #define _CBOARDBASE_H_ class CBoardBase { protected: CBoardBase(); void initBoard(); . . #endif }}} 이는 다음과 같이 표현 가능하다. {{{~cpp #pragma once class CBoardBase { protected: CBoardBase(); void initBoard(); . . }}} 단, pragma 명령은 컴파일러에 따라 지원여부가 다르므로 사용에 대해 유의할 필요가 있다. DeleteMe) once 외에도 #pragma 에 관한 다양한 옵션들이 존재한다. DeleteMe) #pragma 는 거의 표준에 가깝다고 어디서 본 것 같습니다;; == [Profiling] == [C++Profiling] == Debugger 의 사용 == 의외로 Debugger 를 이용하지 않는 사람들이 있다. UnitTest 를 작성하면서 프로그래밍을 하지 않는다면, Debugger는 불가피하다. 학교 프로그래밍 수업때 정식으로 가르치지 않기 때문에 MSDN이나 온라인의 강좌, 알고 있는 학우들에게 물어보아 배울수 있다. (More to come) === 여러개의 Project 를 사용하기 === 예제 : ProjectTheCell (현재 진행중인 Othello Project) (more to come) VS.net 에서는 프로젝트 상위 개념으로 솔루션이 존재합니다. (6.0도 그랬나? WorkSpace라는 녀석이 있었던듯... 아무튼~). 여러 프로젝트를 한 솔루션에서 관리하는 게 상당히 편해 졌더군요. 시작 프로젝트를 설정하고, 프로젝트의 컴파일 순서를 결정하는 일도 할 수 있고요. === 라이브러리 파일 링크 걸기 === 기본적으로 지정된 경로 밖에서 라이브러리를 사용해야 하는 경우가 있다. 몰랐다가 링크를 거느라 한참 고생한 김에 여기에 정리해본다. ==== VS 6.0 ==== * Project(프로젝트) » Settings(설정)를 선택합니다. * Link(연결) 탭을 선택합니다. * Category(카테고리) 드롭 다운 메뉴에서 Input(입력)을 선택합니다. * Object/library(개체/라이브러리) 모듈 부분에서 라이브러리 파일 이름을 추가합니다. * 그리고 라이브러리 경로를 이 라이브러리들의 위치에 추가해야 합니다. Additional library path(추가 라이브러리 경로)에 라이브러리 파일이 있는 폴더를 추가해 주세요. ==== VS.NET ==== * View(보기) » Solution Explorer(솔루션 탐색기)를 선택합니다 * Tools(도구) » Options(옵션) » Projects(프로젝트) » VC++ Directories(VC++ 디렉토리)를 선택합니다. * Show directories for:(다음 디렉토리 표시:) 드롭 다운 메뉴에서 Include Files(파일 포함)를 선택하고 include 파일이 위치한 디렉토리(예: C:\라이브러리폴더\include)를 입력합니다. * Show directories for:(다음 디렉토리 표시:) 드롭 다운 메뉴에서 Library Files(라이브러리 파일)를 선택하고 라이브러리 파일이 위치한 디렉토리(예: C:\라이브러리폴더\lib)를 입력합니다. * Show directories for:(다음 디렉토리 표시:) 드롭 다운 메뉴에서 Executable Files(실행 파일)를 선택하고 실행 파일이 위치한 디렉토리(예: C:\라이브러리폴더\bin)를 입력합니다. * 기본 도구 표시줄에서 Project(프로젝트) » Properties(속성) » Linker(링커) » Input(입력)을 선택하고 "Additional Dependencies(추가 의존관계)" 행에 필요한 라이브러리 파일 (예: abcd.lib)을 추가합니다. Reference : [http://support.intel.com/support/kr/performancetools/libraries/mkl/win/sb/cs-017282.htm Intel 라이브러리 연결 요령] ---- [도구분류]