
C++
anenyang
这个作者很懒,什么都没留下…
展开
-
#pragma once 与 #ifndef 解析
为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 声明、定义语句转载 2011-11-23 16:10:16 · 492 阅读 · 0 评论 -
从C++到C++/CLI
从C++到C++/CLI 刘未鹏(pongba) /文 看起来只是在C++后面多写了一个“/CLI”,然而其意义却远不止于此,google的c++.moderated版上为此还发起了数星期的讨论,在国内大部分人对C++/CLI还不是很了解的情况下,google上面已然硝烟四起... 就像我们作出其它任何选择一样,在选择之前最重要的是先要清楚为什么作出这样或那样的选择—转载 2011-12-23 16:16:15 · 922 阅读 · 0 评论 -
EventHandler
/**.h****/public ref class ReportEventArgs{public: ReportEventArgs(); array ^ ReportArray;}; public ref class MyClass{private: static ReportEventArgs ^ m_pEventReportArgs原创 2011-12-22 09:09:45 · 659 阅读 · 0 评论 -
C++/CLI(八):类的分类与定义
C++/CLI中可以定义 两种类型的struct和class类型,一种为数值类(或数值结构):value class(value struct);一种是引用类(或引用结构):ref class(ref value)。与本地C++一样,class与struct的区别在于前者的成员默认为私有,后者默认为公有。下面仅以类来介绍,内容同样适用于结构。value class与ref class组成的是双转载 2011-12-02 16:11:29 · 2081 阅读 · 0 评论 -
C++/CLI(七):类函数
类函数是C++/CLI中引入的新概念,其功能类似于函数模板,但原理上却迥然不同。使用函数模板时,编译器根据模板生成函数源代码,然后将其与其它代码 一起编译。这种方法可能会产生许多函数,从而使得生成模块的体积增加,这就是所谓的“代码膨胀”。类函数与之不同,类函数本身将被编译,在调用类函数时, 实际类型在运行时取代了类函数的类型形参,这不会导致新增代码的问题。一、类函数的定义类函数与普通函数的转载 2011-12-02 16:10:43 · 1937 阅读 · 0 评论 -
C++/CLI(六):函数
C++/CLI中函数的工作方式与ISO/ANSI C++完全相同,但由于在C++/CLI中用跟踪句柄和跟踪引用替代了本地指针和引用,因此也带来一些变化,主要包括CLR程序中函数的形参与返回值可以是数值类型、跟踪句柄、跟踪引用和内部指针。如果某个形参是CLR数组,程序不需要另外的参数指定其大小,因为数组大小在属性Length中。在C++/CLI程序中,不能像C++一样进行转载 2011-12-02 16:10:02 · 1279 阅读 · 0 评论 -
C++/CLI(一):基础
相比于ISO/ANSI C++而言,C++/CLI进行了大量的扩充,并且提供了大量的附加功能。主要包括:在C++/CLI程序中,所有ISO/ANSI基本数据类型都可以使用,但在一些特殊的上下文环境中,它们具有一些额外属性;在控制台程序中,C++/CLI对键盘和命令行输出提供了自己的机制;C++/CLI中引入了safe_cast运算符,确保强制类型转换操作能够生成可检验的转载 2011-12-02 16:02:58 · 1248 阅读 · 0 评论 -
C++/CLI(二):控制与循环
一、基本控制结构ISO/ANSI C++中的控制与循环全部适用于C++/CLI。下例展示了C++/CLI控制台程序中的控制循环:例子:基本循环控制- - - - - - - - - - - - - - - - > [Ex3_15.cpp] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -转载 2011-12-02 16:06:06 · 875 阅读 · 0 评论 -
C++/CLI(五):跟踪句柄、跟踪引用及内部指针
与本地C++自己维护堆不同,C++/CLI中动态分配的内存是由CLR来维护的。当不需要堆时,CLR自动将其删除回收,同时CLR还能自动地压缩内存堆以避免产生不必要的内存碎片。这种机制能够避免内存泄露和内存碎片,被称为垃圾回收,而由CLR管理的这种堆被称为CLR堆。它由操作符gcnew创建。由于垃圾回收机制会改变堆中对象的地址,因此不能在CLR堆中使用普通C++指针,因为如果指针指向的对象地址发转载 2011-12-02 16:09:18 · 3262 阅读 · 0 评论 -
C++/CLI(四):字符串
C++/CLI字符串(Unicode字符组成的字符串)是指在System命名空间中定义的String类,即由System:Char类型的字符序列组成的字符串。它包含大量强大的功能,使得字符串的处理非常容易。创建一个String对象的方法如下例所示:System::String^ saying = L"Many hands make light work.";跟踪句柄saying用于访问St转载 2011-12-02 16:08:30 · 2180 阅读 · 0 评论 -
C++/CLI(三):数组
要学习数组,必须先了解跟踪句柄。一、跟踪句柄跟踪句柄类似于本地C++指针,但也有很大区别。跟踪句柄确实存储着某个对象的地址,但当CLR压缩堆过程中改变了该对象的地址,则垃圾回收器自动更新句柄所包含的地址。我们不能像本地指针那样用跟踪句柄来执行地址的算术运算,也不允许对跟踪句柄进行强制类型转换。在 CLR堆中创建的对象必须被跟踪句柄引用。所有属于引用类型的对象都存储在堆中,因此为引用这些转载 2011-12-02 16:01:24 · 4597 阅读 · 0 评论 -
在VS2005中创建CLR类库,可以在C#中直接调用
1. 一般使用两种办法导出函数: 1)用__declspec(dllexport) 2)用def文件经过试验第一种,总是无法找到函数入口点,第二种则可以。2. def写法:LIBRARY "PLCClient"EXPORTS Connect @1 PLCClient是dll名,Connect是函数名,空格后@,数字1是顺序3.链接d原创 2011-11-30 11:47:26 · 1377 阅读 · 0 评论 -
编译器将“*”替换为“^”以继续进行分析
今天起想自己编写一个股票交易分析的软件,准备采用 CLR 支持库,结果上来就碰了钉子,打开文件对话框编程没有办法执行,总是出错。下面的例子是HM Deitel父子出版的 Visual C++ .net 高级编程中的代码--------------------------------Windows::Forms::OpenFileDialog *openDlg = new OpenFil转载 2011-12-01 11:20:12 · 1594 阅读 · 0 评论 -
Visual C++ .NET编程:托管C++概述
2000年6月,Microsoft推出了“Microsoft.NET下一代互联网软件和服务战略”,引起IT行业的广泛关注。2000年9月,Microsoft在旧金山发布了Enterprise 2000。同月,Microsoft原总裁兼首席执行官鲍尔默来到中国就“下一代互联网”的主题进行演讲,在中国掀起了一股“.NET旋风”。2000年11月,Microsoft在Comdex计算机大展上发布了Vis转载 2011-12-01 09:34:38 · 936 阅读 · 0 评论 -
C++/CLI编程一些基本概念
这里列举了一些我认为C++/CLI编程的需要知道一些基本概念非安全代码(Unsafe code):一般而言,用VB.NET, C#编译成的代码是安全代码,这里的安全是指编译器本身的能力而言。比如对同样的一个C#程序,如果使用/unsafe选项进行编译的话,会产生如下的directive:.assembly assemblyNameXXX{// 涉及到安全许可时,忽略代码校验 .转载 2011-12-01 09:29:20 · 2052 阅读 · 0 评论 -
详解VS2005模块定义文件(.def)
从VS2005MSDN上翻译的.def文件定义:1、模块定义 (.def) 文件 模块定义 (.def) 文件为链接器提供有关被链接程序的导出、属性及其他方面的信息。生成 DLL 时,.def 文件最有用。由于存在可代替模块定义语句使用的链接器选项,通常不需要 .def 文件。也可以将__declspec(dllexp转载 2011-12-01 11:11:04 · 1642 阅读 · 0 评论 -
转换指南: 将程序从托管扩展 C++ 迁移到 C++/CLI
转换指南: 将程序从托管扩展 C++ 迁移到 C++/CLIVisual Studio 2005 发布日期 : 5/31/2005 | 更新日期 : 5/31/2005Stanley B. Lippman Microsoft Corporation适用于:C++/CLI 第二版ISO-C++摘要 :C++/CLI代表 ISO-C++标准语言的转载 2011-12-23 16:18:39 · 1580 阅读 · 0 评论