2010-01-28 2 views
4

나는 C++ (CLI를 배우는 것)을 배우고 있으며 C++을 사용하고 있다는 질문을 올릴 때마다 누군가가 C++을 사용하지 않는다고 말하는 목을 뛰어 내리지 만 C++/CLI. 나는이 점에 익숙하지 않은 차이점을 정말로 모르지만, 모든 사람들을 화나게하는 것처럼 보입니다. 차이점에 대해 밝히는 사람이 있습니까?C++과 C++ CLI의 차이점

두 번째 메모에서 내가 CLI를 사용하여 make a method accessible to my C# project을 사용할 수 있다고 제안했기 때문입니다. 내 모든 C++ 프로젝트, 내 생성자를 통해 잘 실행되고 있지만 지금은 내 C# 프로젝트에서 동일한 메서드를 호출 할 수 싶습니다.

답변

1

Wikipedia's page (C++/CLI)에는 몇 가지 좋은 정보가 있습니다.

+11

* 0 * 정보가있는이 답변과는 다릅니다. 이 글을 읽는 사람들이 실제로 질문에 대한 답을 찾을 수 있도록 요약을 제공해주십시오. 외부 리소스에 연결하기 만하면 SO가 나쁜 스타일로 간주됩니다. – jalf

+0

@ jalf, 제발, 제 대답은 * 정보를 가지고 있습니다, 위키 피 디아에 대한 링크가 있습니다 :). 내가 제공 할 수있는 것보다 더 완전한 답을 얻기 위해 링크를 따라 가기가 어렵지 않습니다. – Trent

+3

먼저 링크가 다운 된 경우 어떻게해야합니까? 파손될 수 있습니까? 삭제 되었습니까? 둘째,이 질문에 대한 답변에 관심이있는 사람은 하나 이상의 답변을 읽는 것이 좋습니다. 모든 대답이 단순히 외부 리소스에 대한 링크 일 경우 갑자기 많은 작업이 필요합니다. 셋째, 귀하의 담당자는 귀하의 지식과 도움을 나타냅니다. 이 경우 자신의 지식을 * zero * 표시 했으므로 현재 게시 된 게시물은 -1을 보증합니다. – jalf

2

CLI는 "공용 언어 인터페이스"에서 실행됩니다. 이것은 기본적으로 컴파일 될 때 컴파일 된 코드가 결국 C#을 통해 생성 된 바이트 코드처럼 할당된다는 것을 의미합니다.

C++ CLI에는 C++에없는 가비지 수집과 같은 확장 기능이 추가되었습니다. C++ CLI는 "안전한"C++ 코드도 허용합니다. 이 모드에서는 포인터를 사용할 수 없습니다. C++에는 "안전한"코드가 없습니다. 모두 안전하지 않습니다. C++ CLI는 .NET 코드와 C++ 라이브러리를 인터페이싱하는 데는 좋지만 그 외에도 사용법을 찾지 못했습니다.

위키 백과 페이지가 좋은 개요가 있습니다 http://en.wikipedia.org/wiki/C%2B%2B/CLI

을 그리고 네, 그들은 당신이 C++로 프로그램을 허용하지 않습니다 C++ CLI로 프로그래밍 할 수있는 당신에 뛰어 맞아 .... 그들은 다른 당신은 단지 그들을 섞어서는 안됩니다.

1

AFAIK, C++ CLI를 사용하면 .net 프레임 워크에 액세스 할 수 있습니다.

그것은 C++

2

C++은 하드웨어에 대한 준수 바이너리로 직접 실행 일부 쓰레기 수집 및하지에 대한 몇 가지 다른 특정 기능을 제공합니다. C++ cli는 MS 공용 언어 런타임과의 인터페이스에 사용되는 C++ 확장입니다. IL에 정상적으로 따르고 .NET 런타임 내에서 실행됩니다. 가비지 콜렉션 인 두 가지 주요한 것들과 상속과 인터페이스가 작동하는 방법 사이에는 수많은 차이점이 있습니다.

C++ Cli를 사용하는 이유는 프레임 워크에서 제공하는 수백 가지 클래스를 사용하는 장점이 있습니다. 이들은 CLR 호환 언어에서 모두 액세스 할 수 있으므로 일부 레거시 코드에 링크하지 않는 한 왜 일부가 C++을 사용하여 프레임 워크에 액세스하는지 궁금해졌습니다.

+1

ref 클래스의 일반 C++ 구문 규칙을 적용하지 않는 한 cli 프로젝트 내부에서 C++ 코드를 컴파일 할 수 있으며 표준 C++ 라이브러리를 확실히 링크하고 사용할 수 있습니다. – rerun

+0

@Neil : C++/CLI는 거의 C++의 상위 집합입니다. (대부분의 다른 C++ 컴파일러도 구현하지 않는'export'를 뺀 것입니다.) 따라서 대부분의 합법적 인 C++도 C++/CLI로 컴파일됩니다. 즉, 사실상 모든 C++/CLI 코드는 확장을 사용하므로 C++과 거의 유사하지 않습니다. –