玖叶教程网

前端编程开发入门

实用C++学习目标:最简单实用的注释和预处理器指示符介绍

让我轻轻地打开VS2010,选择“文件”-->“打开”-->“项目/解决方案”:

在弹出的打开项目对话框中选择最简单实用的工程“Z.sln”(如没有该工程,请先快速学习上一篇《建立一个最简单实用的C++项目》。实在不想看也没关系,不影响下面的学习),点击“打开”。

工程被打开,主窗口自动展开“Z.cpp”代码文件(上次关闭工程时打开的文件)

(1)注释

观察一下“Z.cpp”里前两行的内容:

// Z.cpp : 定义控制台应用程序的入口点。

//

这两行是C++语法里的“注释”,即给程序员(自己或其他同事)看的内容,可以写点文件说明、功能说明、编程心得等等。就像空格、Tab符,编译器实际编译时是忽略它的。

C++支持两种注释符号,第一种是双斜线(“//”),可用来注释一个单行,右边的内容都会被编译器忽略。这是最实用的方式。

小止说一个VS2010小技巧:选中几行代码,点击工具条上的“注释选中行”按钮,然后会发现,这几行代码会自动被“//”注释起来。如果再点击“注释选中行”按钮右边的“取消对选中行的注释”按钮,则这几行代码又会自动被取消注释。是不是很方便实用?

另一种是注释对(“/*”和“*/”),这是C 语言唯一支持的注释语法,在C++中并不常用。编译器会无视/**/之间的代码,这个可以跨越空格、Tab符、换行,所以一个注释对可以支持注释多行代码。

(2)预处理器指示符

观察一下“Z.cpp”里第4行和第5行的内容:

#include "stdafx.h"

#include <iostream>

这两行有个共同的特点,首先都是“#”开头。井号“#”就是所谓的预处理器指示符,它表示该行代码是给预处理器用的,也就是编译前的预先处理过程,一般是用于代码自动展开、代码替换、编译设置等用途。

其中最最最实用的,就是这个“#include ”语法了。它指示编译前由预处理器自动读入指定文件的内容。

#include "stdafx.h"代表在工程目录下找到名为“stdafx.h”的文件,并在这一行将其内容自动展开。

#include <iostream>代表在预定义目录(这是VS2010自动设置的目录,可在工程设置里查看或修改)找到名为“iostream”的文件,并在这一行将其内容自动展开。

观察一下“stdafx.h”的内容

看到这行代码#pragma once

这行预处理的含义是用来防止编译器多次展开同一个头文件。编译器多次展开同一个头文件,会出现代码行重复,可能导致编译时报“重复定义”错误。这行预处理也是很实用的,在VS2010工程的每个头文件的第一个有效代码行都能看到,是标准配置。

其它的预处理命令还有“#define”、“#ifdef”、“#ifndef”、“#endif”等等,这些目前已不常用。我们写代码时可以完全不用。但有些老代码或者库文件代码里有绕不过去,比如我们在“Z.cpp”里查看一下“_tmain”函数的定义:

#define _tmain wmain

#define _tmain main

为什么有两个,这是因为Windows程序的字符集编码方式有两种,Unicode字符集和多字节字符集(我们常用的GBK编码就属于多字节字符集)。VS2010会根据工程设置自动将“_tmain”替换为“wmain”(Unicode)或“main”(多字节)。故“#define”常用于名称或变量替换。

其它的含义和使用方式可以遇到了再去MSDN上查阅。

学习目标“最简单实用的注释和预处理器指示符介绍”已完成[再见]

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言