更新:2007 年 11 月
本页链接到有关任务的帮助,这些任务与使用 Visual C++ 的命令行开发相关。若要查看“帮助”中涉及的其他类别的常见任务,请参见如何实现 - Visual C++。
命令行中的 Visual C++
- 从命令行编译本机 C++ 程序 (C++) 
 演示如何使用文本编辑器创建简单的 Visual C++ 程序,并在命令行中进行编译。
- 编译器选项 
 介绍 cl.exe,此工具用于控制 Microsoft C 和 C++ 编译器与链接器。
- 链接器选项 
 介绍 LINK,这是一种工具,可将通用对象文件格式 (COFF) 对象文件和库链接起来,以创建可执行 (.exe) 文件或动态链接库 (DLL)。
- NMAKE 参考 
 介绍 Microsoft 程序维护实用工具 (NMAKE.EXE),这是一种可以根据说明文件中包含的命令生成项目的工具。
- Visual C++ 2005 中的 NMAKE 功能 
 列出 Visual C++ 2005 中 NMAKE 的新增功能。
- VCBUILD 参考 
 描述如何使用 VCBUILD.exe 从命令行生成 Visual C++ 项目和 Visual Studio 解决方案。
- 如何:使用 VCBUILD 运行多处理器生成 
 描述如何使用 VCBUILD 从命令行运行 Multiprocessor Builds。
- Visual C++ 简介(针对 UNIX 用户) 
 为不熟悉 Visual C++ 但希望熟练掌握 Visual C++ 的 UNIX 用户提供信息。
- 为命令行生成设置路径和环境变量 
 描述如何运行 vcvars32.bat 设置用于在命令行上进行生成的环境。
Visual C++ 示例
数组
- How to: Create Single-Dimension Arrays 
 说明如何创建引用类型、值类型和本机指针类型的一维数组。
- How to: Create Multidimension Arrays 
 说明如何创建引用类型、值类型和本机指针类型的多维数组。
- How to: Iterate Over Arrays with for each 
 说明如何对不同类型的数组使用 for each, in 关键字。
- How to: Create Arrays of Managed Arrays (Jagged Arrays) 
 说明如何创建引用类型、值类型和本机指针类型的托管数组的一维数组。
- How to: Sort Arrays 
 演示如何使用 Sort 方法对数组元素进行排序。
- How to: Sort Arrays Using Custom Criteria 
 演示如何通过实现 IComparable 接口对数组进行排序。
- How to: Make Typedefs for Managed Arrays 
 显示如何为托管数组创建 typedef。
- How to: Accept Variable Arguments 
 说明如何使用 ... 语法在 Visual C++ 中实现参数数目可变的函数。
- How to: Use Managed Arrays as Template Type Parameters 
 显示如何将托管数组用作模板参数。
- How to: Declare and Use Interior Pointers and Managed Arrays 
 说明如何声明和使用指向数组的内部指针。
装箱和强制转换
- How to: Use gcnew to Create Value Types and Use Implicit Boxing 
 显示如何对值类型使用 gcnew 来创建已装箱的值类型,该值类型随后可置于托管的垃圾回收堆上。
- How to: Unboxing 
 说明如何对值进行取消装箱和修改。
- How to: Explicitly Request Boxing 
 说明如何通过将一个变量分配给类型为 Object 的变量来显式请求装箱。
- How to: Downcast with safe_cast 
 说明如何使用 safe_cast,从基类向下转换为由该基类派生的类。
- How to: Use safe_cast and Boxing 
 说明如何使用 safe_cast 将 CLR 堆中的值装箱。
- How to: Use safe_cast and Generic Types 
 说明如何使用 safe_cast 执行泛型类型的向下转换。
- How to: Use safe_cast and Unboxing 
 说明如何使用 safe_cast 将 CLR 堆上的值取消装箱。
- How to: Use safe_cast and User-Defined Conversions 
 说明如何使用 safe_cast 调用用户定义的转换。
- How to: Upcast with safe_cast 
 说明如何使用 safe_cast 执行向上转换,即从派生类型强制转换为它的一个基类。
数据类型和接口
- How to: Instantiate Classes and Structs 
 演示只能在托管堆上而不能在堆栈或本机堆上初始化引用类型和值类型。
- How to: Convert with Constructors 
 介绍转换构造函数,此类构造函数具有类型参数并使用该类型创建对象。
- How to: Define an Interface Static Constructor 
 介绍静态构造函数,此类构造函数可用于初始化静态数据成员。
- How to: Define Static Constructors in a Class or Struct 
 演示如何创建静态构造函数。
- How to: Write Template Functions that Take Native, Value, or Reference Parameters 
 演示通过在模板函数的签名中使用跟踪引用,可确保使用类型为本机、CLR 值或 CLR 引用的参数能够调用该函数。
枚举
- How to: Specify Underlying Types of Enums 
 说明如何指定 enum 的基础类型。
- How to: Convert Between Managed and Standard Enumerations 
 演示如何使用强制转换在 enum 和整型之间进行转换。
事件和委托
- How to: Compose Delegates 
 演示如何撰写委托。
- How to: Define and Use Delegates 
 演示如何定义和使用委托。
- How to: Define and Use Static Events 
 说明如何定义和使用静态事件。
- How to: Define Event Accessor Methods 
 说明如何定义添加和移除处理程序时事件的行为,以及引发事件时事件的行为。
- How to: Implement Abstract Events 
 说明如何实现抽象事件。
- How to: Implement Managed Virtual Events 
 说明如何在接口和类中实现虚拟的托管事件。
- How to: Access Events in Interfaces 
 说明如何访问接口中的事件。
- How to: Add Multiple Handlers to Events 
 演示事件接收器或任何其他客户端代码可向事件中添加一个或多个事件处理程序。
- How to: Associate Delegates to Members of a Value Class 
 说明如何将委托与值类的成员关联。
- How to: Associate Delegates to Unmanaged Functions 
 说明如何通过在托管类型中包装本机函数并声明该函数必须通过 P/Invoke 调用,将委托与本机函数关联。
- How to: Override Default Access of add, remove, and raise Methods 
 说明如何重写添加、移除和引发事件方法的默认访问。
- How to: Raise Events Defined in a Different Assembly 
 显示如何在一个程序集中使用另一程序集中定义的事件和事件处理程序。
异常
- Basic Concepts in Using Managed Exceptions 
 讨论托管应用程序中用于异常处理的基本概念。
- Differences in Exception Handling Behavior Under /CLR 
 详细讨论异常处理的标准行为的区别和某些限制。
- How to: Define and Install a Global Exception Handler 
 演示如何捕获未处理的异常。
- How to: Catch Exceptions in Native Code Thrown from MSIL 
 显示如何使用 __try 和 __except 捕捉本机代码中的 CLR 异常。
- finally 
 讨论 CLR 异常处理 finally 子句。
For Each
- How to: Iterate Over Arrays with for each 
 说明如何对不同类型的数组使用 for each, in 关键字。
- How to: Iterate Over a Generic Collection with for each 
 演示如何创建泛型集合,并使用 for each, in 进行循环访问。
- How to: Iterate Over a User-Defined Collection with for each 
 演示如何使用 for each, in 循环访问用户定义的集合。
- How to: Iterate Over STL Collection with for each 
 演示如何使用 for each, in 循环访问 STL 集合。
泛型
- Overview of Generics in C++ 
 提供泛型的概述,它是公共语言运行库支持的参数化类型。
- Generic Functions 
 讨论泛型函数,它是用类型参数声明的函数。
- Generic Classes (C++) 
 描述如何创建泛型类。
- Generic Interfaces (C++) 
 描述如何创建泛型接口。
- Generic Delegates (C++) 
 描述如何创建泛型委托。
- Constraints 
 描述约束是用作类型参数的类型必须满足的要求。
- Consuming Generics from Other .NET Languages 
 讨论用一种 .NET 语言编写的泛型如何才能在其他 .NET 语言中使用。
- Generics and Templates 
 提供泛型和模板之间诸多差异的概述。
- How to: Convert Generic Classes 
 说明如何将泛型类转换为 T。
指针
- How to: Declare Interior Pointers with the const Keyword 
 说明如何在内部指针的声明中使用 const。
- How to: Overload Functions with Interior Pointers and Native Pointers 
 演示可以根据参数类型是内部指针还是本机指针来重载函数。
- How to: Cannot Use Tracking References and Unary "Take-Address" Operator 
 说明无法将跟踪引用用作一元取址运算符。
- How to: Declare Pinning Pointers and Value Types 
 说明可以将钉住指针声明为值类型对象,并对装箱的值类型使用 pin_ptr。
- How to: Declare Value Types with the interior_ptr Keyword 
 演示 interior_ptr 可以与值类型一起使用。
- How to: Define the Scope of Pinning Pointers 
 演示仅当 pin_ptr 指向对象时,才会钉住该对象。
- How to: Pin Pointers and Arrays 
 显示如何通过声明数组的元素类型的钉住指针,并钉住该数组的一个元素来钉住它。
属性
- How to: Use Simple Properties 
 演示对于简单属性(即只分配和检索私有数据成员的属性),无须显式定义 get 和 set 访问器函数。
- How to: Use Indexed Properties 
 显示如何使用默认的和用户定义的索引属性。
- How to: Use Multidimensional Properties 
 显示如何创建采用非标准数目的参数的多维属性。
- How to: Declare and Use Static Properties 
 说明如何声明和使用静态属性。
- How to: Declare and Use Virtual Properties 
 说明如何声明和使用虚拟属性。
- How to: Declare Abstract and Sealed Properties 
 说明如何通过定义一个重要的属性并在 get 和 set 访问器函数中指定 abstract 或 sealed 关键字,声明密封或抽象属性。
- How to: Overload Property Accessor Methods 
 演示如何重载索引属性。
跟踪引用
- How to: Use Tracking References and Value Types 
 说明如何通过值类型的跟踪引用进行简单装箱。
- How to: Using Tracking References and Interior Pointers 
 说明对跟踪引用取址将返回一个 interior_ptr 以及如何通过跟踪引用修改和访问数据。
- How to: Pass CLR Types by Reference with Tracking References 
 显示如何使用跟踪引用按引用来传递 CLR 类型。
使用 Visual C++ 处理文件
- 如何:读取二进制文件 
 演示如何读取文件中的二进制数据。
- 如何:编写二进制文件 
 演示如何向文件写入二进制数据。
- 如何:读取文本文件 
 演示如何打开文本文件并一次读取一行。
- 如何:编写文本文件 
 演示如何创建文本文件,并使用 StreamWriter 类向其中写入文本。
- 如何:枚举目录中的文件 
 演示如何检索目录中的文件列表。
- 如何:监视文件系统更改 
 使用 FileSystemWatcher 注册对应于文件创建、文件更改、文件删除或文件重命名的事件。
- 如何:检索文件信息 
 演示 FileInfo 类。获取文件名称后,就可以使用此类检索文件信息,例如文件大小、目录、全名、创建日期和时间,以及上次修改的日期和时间。
使用 Visual C++ 进行 Windows 操作
- 如何:将数据写入 Windows 注册表 
 使用 CurrentUser 项可创建 RegistryKey 类的可写实例。
- 如何:从 Windows 注册表中读取数据 
 使用 CurrentUser 项可读取 Windows 注册表中的数据。
- 如何:从剪贴板中检索文本 
 使用 GetDataObject 成员函数返回指向 IDataObject 接口的指针,该指针随后可用于查询数据格式及检索实际数据。
- 如何:将文本存储在剪贴板中 
 使用 System.Windows.Forms 命名空间中定义的 Clipboard 对象存储字符串。
- 如何:检索 Windows 版本 
 演示如何检索当前操作系统的平台和版本信息。
- 如何:检索自启动以来经过的时间 
 演示如何确定从 Windows 启动算起经过的滴答计数(即毫秒数)。