C/C++ 支持快速入门教程
由
Ann Rice
贡献和维护
2007 年 10 月 [修订版本号:V6.0-2]
下面的简明教程为您介绍用带有 C/C++ 支持的 NetBeans IDE 开发 C 或 C++ 应用程序的一些基本步骤。
内容
要求
在开始 C 或 C++ 开发之前,您必须要安装以下软件:
NetBeans IDE 6.0
NetBeans C/C++ 包
GNU C 和 C++ 编译器、make 和 gdb (Windows 平台);GNU C 和 C++ 编译器,或
Sun C 和 C++ 编译器、make 和 gdb (Solaris 和 Linux 平台)
有关下载和安装所需软件的详细信息,请参见
NetBeans IDE
6.0 安装说明 和安装并配置 C/C++ 支持 。
样例项目
只是想体验一些项目吗?请在 IDE 中,选择“文件”>“新建项目”,然后打开“样例”类别、“C/C++ 开发”子类别和“C/C++”子类别。IDE 提供了一些
C 和 C++ 样例项目来帮助您熟悉 IDE。
创建 C 和 C++ 项目
NetBeans C/C++ 支持让您能用生成的 makefile 创建 C 和 C++ 应用程序和库项目,还能从现有代码创建 C 和 C++ 项目。
对于 C/C++ 应用程序、动态库或静态库项目,IDE 控制应用程序如何生成、运行和调试的各个方面。您可在创建项目时,或在“项目属性”对话框中指定项目设置。IDE
生成一个 makefile 来存储所有设置。
创建 C/C++ 应用程序项目
选择“文件”>“新建项目”以打开“新建项目”向导。
在向导中,选择“C/C++”类别。
向导为创建新项目提供四种选项:“基于现有代码的 C/C++ 项目”、“C/C++ 应用程序”、“C/C++ 动态库”和“C/C++ 静态库”。选择“C/C++
应用程序”,然后单击“下一步”。
通过向导并使用缺省设置来创建一个“C/C++ 应用程序”项目。您可以选择项目的名称和位置。
单击“完成”退出向导。
现已创建了一个具有四个逻辑文件夹的项目。逻辑文件夹不是目录。它是一种组织文件的方式,并不反映文件在磁盘上的物理存储位置。添加到逻辑文件夹的文件将自动成为项目的一部分,并且在生成项目时进行编译。
添加到“重要文件”文件夹中的文件不是项目的一部分,在生成项目时不会编译。这些文件只是用于参考,并在您用现有 makefile 创建项目时提供方便。
在项目的逻辑视图与物理视图之间切换
一个项目同时具有逻辑和物理视图。您可以在项目的逻辑视图与物理视图之间进行切换。
选择“文件”选项卡。该窗口显示项目的物理视图。它按原样体现磁盘上存储的文件和文件夹。
选择“项目”选项卡。该窗口显示项目的逻辑视图。
在项目中添加文件和文件夹
您可以在项目中添加逻辑文件夹。
右键单击应用程序项目的项目节点,选择“新建逻辑文件夹”。一个新的逻辑文件夹将被添加到项目中。
右键单击新逻辑文件夹并选择“重命名”。输入您想要的新文件夹的名称。
您可以在现有文件夹中添加文件和文件夹。逻辑文件夹可以嵌套。
在项目中添加新文件
您可以在项目中添加新文件。
右键单击“源文件”文件夹,然后选择“新建”。
从子菜单中选择在“主 C 文件”。
在“名称和位置”页m的“文件名”字段中输入 main 。
单击“完成”。
将在向导中指定的目录下创建 main.c 文件,并将其添加到“源文件”文件夹中。您可以在此文件夹中添加任何类型的文件,而不仅仅是源文件。
在项目中添加新文件
您可以在项目中添加新文件。
右键单击“源文件”文件夹,然后选择“新建”。
在子菜单中选择“主 C 文件”。
在“新建文件”对话框的“名称和位置”页中,在“文件名”字段中输入 main 。
单击“完成”。
main.c 文件被创建到磁盘上,位于向导指定的目录下,并被添加到“源文件”文件夹中。您可以在此文件夹中添加任何类型的文件,而不仅仅是源文件。
在项目中添加更多新文件
右键单击“头文件”文件夹,然后选择“新建”。
在子菜单中选择“C 头文件”。
在“新建文件”对话框的“名称和位置”页中,在“文件名”字段中输入 file 。
单击“完成”。
该文件被创建到磁盘上,位于向导指定的目录下,并被添加到“头文件”文件夹中。
在项目中添加现有文件
您可以使用两种方法在项目中添加现有文件:
右键单击“源文件”文件夹,然后选择“添加现有项”。您可以通过“选择项”对话框定位到磁盘上的现有文件,并将其添加到项目中。
右键单击“源文件”文件夹,然后选择“从文件夹中添加现有项”。使用“添加文件”对话框添加包含现有文件的文件夹。
请不要使用“新建文件夹”项来添加现有项。“名称和位置”面板会提示您该文件已存在。
设置项目属性
创建项目时具有两项配置:“Debug”(调试)和“Release”(发布)。配置表示项目存储当前设置的方式。使用“Debug”配置可以生成包含调试信息的应用程序版本。使用“Release”
配置可以生成优化的版本。
“项目属性”对话框包含了项目的生成和配置信息。要打开“项目属性”对话框:
右键单击 Application_1 项目的项目节点,然后选择“属性”。
在“项目属性”对话框中,您可以修改编译器的设置和其他配置设置,方法是选择左侧面板中的某个节点,然后在右侧面板中修改相应的属性。请选择一些节点和属性值,并观察可以设置的属性。您将为当前选择的配置设置属性。
管理配置
在“项目属性”窗口中更改的属性将存储在当前配置的 makefile 中。您可以编辑缺省配置,或者创建新的配置。要创建一个新的配置:
在“项目属性”对话框中,单击“管理配置”按钮。
在“配置”对话框中,选择一个最符合您的需求的配置。对于本例,请选择“Release”配置并单击“复制”按钮。然后单击“重命名”。
在“重命名”对话框中,将此配置重命名为“PerformanceRelease”。单击“确定”。
在“配置”对话框中,单击“确定”。
请注意,在“项目属性”对话框的“配置”下拉列表中,“PerformanceRelease” 配置已被选中。
在左侧面板中,依次展开“C/C++”节点和“GNU C 编译器”节点,然后选择“常规”节点。
在右侧面板的属性单中,将“开发模式”由“Release”更改为“PerformanceRelease”。单击“确定”。
因为您已经创建了一个新的配置,它将使用一组不同的选项来编译应用程序。
设置源文件属性
为 C 或 C++ 项目设置了项目属性后,相关属性将应用于项目中的所有文件。您也可以为特定的文件设置某些属性。
右键单击 main.c 源文件,然后选择“属性”。对于单个文件,您可以覆盖项目编译器的设置和其他属性。您还可以在特定的配置中排除某些文件的生成。
取消“项目属性”对话框。
设置主项目
当您在“项目”窗口中右键单击项目节点时,将会显示一个可在此选定项目上执行的操作的弹出菜单。如果您同时打开了多个项目,项目的弹出菜单只针对于正在操作的项目。但是,菜单栏和工具栏上的项目相关操作又是怎样呢?
菜单栏和工具栏上的大多数项目相关操作都只针对于主项目。主项目节点在“项目”窗口中以粗体显示。
要在 IDE 中更改主项目,请执行以下操作:
右键单击所需的项目节点,然后选择“设置为主项目”。该项目将成为 IDE 的主项目,并且菜单栏和工具栏中的操作将与其关联。
生成项目
要生成项目:
选择“生成”>“生成主项目”即可生成项目。生成的输出显示在“输出”中。
在主工具栏的配置下拉列表中,将配置由“Debug”切换为“PerformanceRelease”。现在将使用“PerformanceRelease”配置来生成项目。
选择“生成”>“生成主项目”即可生成项目。生成的输出显示在“输出”中。
通过选择“生成”菜单中的操作,您可以生成、清理或清理并生成项目。项目会根据不同的配置分别保留目标文件和可执行文件,所以不必担心文件在多个配置中发生混淆。
编译单个文件
要编译单个源文件:
右键单击 main.c 文件,然后选择“编译文件”。仅该文件被编译。
注意:对于根据现有代码创建的 C/C++ 项目类型,不支持编译单个文件。
运行项目
该程序输出命令行参数。在运行程序之前,我们将在当前配置中设置一些参数,然后再运行程序。
要创建 Args 项目,设置参数并运行项目:
选择“文件”>“新建项目”。
在项目向导中,依次展开“样例”类别和“C/C++ 开发”子类别。
选择“C/C++”子类别,然后选择 Args 项目。单击“下一步”,然后单击“完成”。
右键单击 Args_1 项目节点,然后选择“生成项目”。将生成项目。
右键单击 Args_1 项目节点,然后选择“属性”。
在“项目属性”对话框中,选择“运行”节点。
在“参数”文本字段中,输入“1111 2222 3333”。单击“确定”。
选择“运行”>“运行主项目”。将运行应用程序,并在“输出”窗口中显示这些参数。
创建基于现有代码的 C/C++ 项目
对于基于现有代码的 C/C++ 项目,IDE 依靠现有 makefile 来提供编译和运行应用程序的指令。
创建基于现有代码的项目
从 http://sourceforge.net/projects/loki-lib
下载 loki-0.1.6 库。
将 loki-0.1.6 解压缩到一个目录中。
选择“文件”>“新建项目”以打开“新建项目”向导。
选择“C/C++ 开发”类别。
选择“基于现有代码的 C/C++ 项目”,单击“下一步”。
在“生成工具”页中,单击 Makefile 字段的“浏览”按钮。
在“选择 Makefile”对话框中,导航至保存 loki-0.1.6 的目录。选择 Makefile。单击“选择”。
单击“下一步”。
在“生成操作”页上,“工作目录”、“生成命令”和“清理命令”文本字段将被自动填充。在“生成结果”字段中,键入 makefile
用来保存库 libloki.a (由 loki-0.1.6 源代码生成)的完整路径。单击“下一步”。
在“源文件”页中,将自动列出项目源文件的文件夹的路径。您可以通过单击“添加”并使用“源文件的文件夹”对话框来指定其他文件夹。
在“代码帮助配置”页上,单击“下一步”。
在“项目名称和位置”页的“项目名称”字段中,输入 Loki 。其他字段使用缺省设置。单击“完成”。
将创建项目并在“项目”窗口中打开。您已经创建了一个对现有代码进行了简单包装的项目。
生成和重新生成项目
要生成项目:
要重新生成项目:
右键单击项目的项目节点,然后选择“清理并生成项目”。
编辑源文件
C/C++ 开发包提供了高级的编辑功能来帮助您查看和修改源代码。我们以 Quote 项目为例来浏览这些功能:
选择“文件”>“新建项目”。
在项目向导中,依次展开“样例”类别和“C/C++”子类别。
选择“应用程序”子类别,然后选择 Quote 项目。单击“下一步”,然后单击“完成”。
折叠 C 和 C++ 文件的代码块
对于某些类型的文件,可以使用代码折叠功能来折叠代码块,这样源代码编辑器只显示代码块的首行。
在 Quote_1 应用程序项目中,打开“源文件”文件夹,然后双击 cpu.cc
文件以在源代码编辑器中打开。
单击位于左旁注的折叠图标(带有减号的小方块)折叠其中某个方法的代码。
将鼠标悬停在位于被折叠右侧的 {...} 符号上,可以显示此代码块的内容。
使用类窗口
利用“类视图”,您可以查看项目中所有的类、每个类的成员和字段。
选择“窗口”>“类”以打开显示 Quote_1 项目的类窗口。
展开 Quote_1 节点。将会列出该项目中所有的类。
展开 Customer 类。
双击 customerName 变量以打开 customer.h 头文件。
使用导航窗口
导航窗口为当前选择的文件提供一个紧凑的视图,可简化在该文件的不同部分的导航。
要在导航窗口中显示源文件:
要导航显示在导航窗口中的文件的某个元素:
双击导航窗口中的此元素,编辑器窗口中的鼠标就会移动到此元素。
使用超链接
超级链接导航允许您从类、方法、变量或常量的调用位置跳至其声明位置,或从其声明位置跳至其定义位置。
在 Quote_1 项目的 cpu.cc 文件中,右键单击源代码编辑器的左旁注,然后选择“显示行号”。
按住 Ctrl 键,将鼠标悬停在第 26 行上。ComputeSupportMetric 函数将高亮显示。
单击此超级链接,编辑器将跳至该函数的定义位置。
按住 Ctrl 键,将鼠标悬停在其定义上,然后单击超链接。编辑器将跳至该函数在 cpu.h 头文件中的声明位置。
单击编辑器工具栏中的左箭头按钮,编辑器将跳回至定义位置。
“包含层次”窗口允许您检视在某个源文件中直接或间接包含的所有头文件和源文件,或者某个头文件中直接或间接包含的所有源文件和头文件
在源代码编辑器中打开 Quote_1 项目中的 module.cc
文件。
右键单击文件中的 #include "module.h" 行,然后选择“查看包含层次”。
缺省情况下,“包含”窗口将显示直接包含此头文件的文件列表。单击窗口下方最右边的按钮以将显示切换为树形图。可展开树形图中的节点以查看所有包含此头文件的所有源文件。
使用类型层次
“类型层次”窗口允许您检视某个类的所有子类型或超类型。
要打开“类型层次”窗口,请右键单击类声明或者某个源文件或头文件中的类引用。要在 IDE 的一个窗口中显示类层次,请选择“查看类型层次”。要在一个弹出窗口中显示类层次,请选择“检视类型层次”。缺省显示该类的所有子类型的树形图。
使用代码完成
IDE 具有动态 C 和 C++ 代码完成功能,使您只需键入一个或几个字符,就会看到一个可用来完成表达式的所有可能的类、方法和变量等的列表。
打开 Quote_1 项目中的 quote.cc 文件,右键单击源代码编辑器的左旁注,然后选择“显示行号”。
在 quote.cc 文件的第 19 行上,输入大写字母 C,然后按 Ctrl-空格。代码完成框将显示一个列表,其中包含
Customer 类。
选择 Customer 类,然后按 Enter 键。
通过键入 "andrew; " 来新建一个 Customer 类的实例。在下一行中,输入字母
a ,然后按 Ctrl-空格。代码完成框将显示一个以字母 a 开头的列表以供选择,例如方法参数、类字段和全局名称等,这些都可以从当前上下文访问。
双击 andrew 选项以表示接受,并在其后键入一个句点。将自动提供给您一个 Customer
类的公共方法和字段的列表。
删除您添加的代码。
使用代码模板
源代码编辑器包含一组常用 C 和 C++ 代码片段的可定制代码模板。通过键入缩写并按空格键,您可以生成完整的代码片段。例如,在
Loki 项目的 Singleton.cpp 文件中:
键入 uns 并按空格键,uns 将展开为 unsigned 。
键入 iff 并按空格键,iff 将展开为 if () {} 。
键入 ife 并按空格键,ife 将展开为 if () {} else
{} 。
键入 fori 并按空格键,fori 将展开为 for (int i
= 0; i < ; i++) {} 。
使用配对完成功能
编辑 C 和 C++ 源文件时,源代码编辑器将对成对字符(如方括号、圆括号和引号)进行“智能”匹配。当键入其中一个字符时,源代码编辑器会自动插入结束字符。
在 Quote_1 项目中,将光标放在 module.cc 文件第 92 行的
{ 后面,然后按 Enter 键以开始新行。
键入 enum state { ,然后按 Enter 键。右花括号和分号将自动添加,并且光标将位于括号之间的行。
键入 invalid=0, success=1 以完成枚举。
在枚举的右花括号 }; 后面一行,键入 if ( 。右圆括号将自动添加,并且光标位于圆括号之间。
键入 v==null 。然后在右圆括号后面键入 { 并换行。右花括号将自动添加。
您可以随时在代码中创建和处理断点。
创建和删除行断点
在 Quote_1 项目中,打开 quote.cc 文件。
在源代码编译器窗口中第 151 行(response = readChar("Enter disk module
type: (S for single disks, R for RAID; Q - exit)", 'S'); )旁的左旁注处单击鼠标左键,这将设置一个行断点。该行将以红色高亮显示,以指示在此设置了断点。
您可以通过单击左旁注中的图标来删除断点。
选择“窗口”>“调试”>“断点”以打开“断点”窗口。此窗口将列出您设置的行断点。
创建函数断点
选择“运行”>“新建断点”(Ctrl+Shift+f8)以打开“新建断点”对话框。
在对话框中,请确保将“调试器”下拉列表设置为“C, C++ Fortran (gdb)”。
在“断点类型”下拉列表中,将类型设置为“函数”。
在“函数名”文本字段中键入函数名称 Customer::GetDiscount 。单击“确定”。
您的函数断点已经设置,并且已被添加到“断点”窗口中的列表。
调试项目
当您启动一个调试会话时,IDE 将启动
gdb 调试器,然后在调试器内运行应用程序。IDE 会自动打开调试器窗口,并将调试器的输出打印到“输出”窗口。
启动调试会话
右键单击该项目节点,然后选择“调试项目”,这将启动 Quote_1 项目的调试会话。调试器启动并运行应用程序,并打开“局部变量”、“监视”和“调用栈”窗口。
选择“窗口”>“调试”>“会话”以打开“会话”窗口。此窗口中将显示调试会话。
检查应用程序的状态
Quote_1 应用程序将提示您在外部 I/O 窗口中进行输入。
在“Enter customer name:”提示后面,输入一个客户名称。
应用程序将在您先前设置的函数断点处停止。选择“窗口”>“调试”>“断点”以打开“断点”窗口。窗口中列出了您先前设置的两个断点。函数断点以粗体显示。
在 customer.cc 文件中,GetDiscount 函数第一行的断点图标上将出现绿色的程序计数器错误。
单击“调用栈”选项卡。调用栈显示三个栈帧。
单击“局部变量”选项卡,请注意它将显示一个变量。单击展开图标(带有加号的小方块)以展开其结构。
单击“继续”按钮。GetDiscount 函数将执行,并将客户折扣信息打印到外部 I/O 窗口。然后提示您进行输入。
请根据提示输入响应信息。程序将在您先前设置的行断点处停止。单击“局部变量”选项卡,请注意它将显示一个很长的局部变量列表。
单击“调用栈”选项卡,请注意调用栈中只剩下两个框架。
单击“继续”按钮并继续根据“外部 I/O”窗口的提示输入响应信息,直到程序运行完毕。当您输入 Q
退出程序时,外部 I/O 窗口将关闭并结束调试会话。要在程序执行完毕之前结束调试会话,您可以在“会话”选项卡中右键单击该会话,然后选择“结束”,或者选择“运行”>“结束调试器会话”。