gcnew를 아시나요?

mandami의 이미지


윈도우즈 어플리케이션을 만들 필요가 생겼습니다. 요새 MS에서 Visual Studio Express버전을 무료로 배포한다는 이야기와 '얼만큼 좋으려나?'는 기대감에 Visual C++ Express 2008을 설치하였습니다. 학부 시절 나름 Visual C++ 6.0으로 Win32나 MFC 좀 만져봤기에 별 걱정 안했습니다.

첫인상 정말 좋더군요. 깔끔하고, 생각보다 빠르고, 한글 잘 박혀있고, 도움말도 충실한거 같고. 그리고 어플리케이션을 만들기 위해 프로젝트를 만지고 도움말과 구글링과 과거의 경험을 결합해 열심히 키보드를 두드리고 있었습니다.

그러다 다음 코드를 보고 멈췄습니다.

// WindosForm.cpp : 기본 프로젝트 파일입니다.
 
#include "stdafx.h"
#include "Form1.h"
 
using namespace WindosForm;
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
	// 컨트롤이 만들어지기 전에 Windows XP 시각 효과를 활성화합니다.
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false); 
 
	// 주 창을 만들어 실행합니다.
	Application::Run(gcnew Form1());
	return 0;
}

함수나 네임스페이스, 클래스 이름 모르는거야 당연한 거고 이름 보고 유추하거나 공부하면 됩니다.

그런데

[STAThreadAttribute]
^args
gcnew

이 셋이 무엇인지 모르겠습니다.
검색해보니, gcnew는 garbage collection돼는 new(managed new던가)이고 ^는 gcnew로 할당했을때 *대신 쓰는 포인터 연산자더군요.

이러한 것들은 .net의 CLR(Common Language Runtime)지원의 일환인걸로 알고 있습니다. 닷넷 프레임워크 하에서 C++이건 C#이건 VB건 J++이건 상관없이 돌아갈 수 있도록 해주는 물건인걸로 알고 있습니다.

그런데 참 꺼려집니다. 이유는 모르겠습니다. 새로운 것을 기피하는 귀찮음인거 같기도 합니다. 그럴 경우 나태한 스스로를 채찍질 해야겠죠. 하지만 그보다는 '이게 C++이 맞나'는 생각과 함께 '혼자가는 Visual Studio 후속버전들을 계속 공부해야 하나?'라는 생각이 먼저 듭니다.

일단 배워두면 무조건 좋긴 좋을거 같습니다. 하지만 고작 닷넷 하에서 돌아가는 어플리케이션 하나 짜자고, 계속해서 변해가는 Visual Studio를 공부해야 하는지 모르겠습니다.

필요의 문제랄까요, 이제는 구닥다리인 Visual C++ 6.0에서 Win32나 MFC만 써도 아직 어플리케이션 만드는데 제약을 못 느끼겠습니다. 전문 윈도우즈 어플리케이션을 제작하는 곳이라면 모르겠지만요.

하지만 '필요하지 않다'고 부정하는 것이 가끔 저의 귀찮음에 대한 변명이라는 생각도 듭니다.

gcnew 한 키워드에 별 잡설을 다 늘어놓게 되는군요.

charsyam의 이미지

혹시나 managed c++ 을 컴파일 하신건 아니신지?

=========================
CharSyam ^^ --- 고운 하루
=========================

=========================
CharSyam ^^ --- 고운 하루
=========================

Scarecrow의 이미지

개인적으론 새로운 언어라고 생각합니다.

C에 뭘 더 붙혀서 C++이라는 새로운 언어를 만들었듯이...
C++에 뭘 더 붙혀서 언어하나 새로 만든거라 생각합니다.

http://en.wikipedia.org/wiki/C%2B%2B/CLI

JuEUS-U의 이미지

원래 지금 알고 있는 지식에 "기술적" 부분을 새로 배우는 데에는 상당한 용기가 필요합니다.
그런 상세한 부분은 금방금방 변하는데다가,
그게 정말로 필요한가에 대한 의구심을 지우기가 힘들거든요.
7년째 줄창 공부만하면서 느낀겁니다 ;ㅅ;

그래서 요즘엔 (GUI 걱정없는) 자바스크립트로 갈아탔습니다 =ㅅ=);;; (나름 스크립트언어...)

nbx2의 이미지

프로젝트생성시
Win32 Project로 생성하세요~

madman93의 이미지

힘들어지는군요
못살겠습니다. ㅠㅠ

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

mandami의 이미지

감사합니다. 자꾸 파고들다 보니 신기하고 재밌긴 하네요. 이러다 빠지면 일 못하는데..

byung82의 이미지

gcnew 는 MC ++을 위한거입니다.

실제로 c/c++로 만든 프로젝트롤 CLI쪽으로 사용하기 위해서는 유용하게 씁니다 ^^;

그런데 사용하다보면 결국 C#으로 돌아온답니다 ^^;

mono쪽도 gcc 도 MC++로 지원준비중이니 한번쯤 작성해보시는것도 좋습니다 ^^:

그럼

tomahawk28의 이미지

닷넷을 C++로 한다라... 용기 있으시군요; 편리상 이점때문에 다들 C#으로 갈아타던데..
MFC 프로그래밍까지 해보셨다면.. 저정도 매크로같은건 .. 별것 아닌것 처럼 느끼실지도.. -_-;;


Can't stop watching this;;