[C++][基础]10_注释-阿里云开发者社区

开发者社区> guitar_zp> 正文

[C++][基础]10_注释

简介: 注释 防止重复编译以test.h为例:#ifndef TEST_H#define TEST_H.#endif一般是用来防止重复包含头文件第一次包含头文件时 XXX没有被定义 第二次再用时 XXX 已经被定义拉就不在包含这个头文件。
+关注继续查看

注释

防止重复编译以test.h为例:#ifndef TEST_H#define TEST_H.#endif一般是用来防止重复包含头文件第一次包含头文件时 XXX没有被定义 第二次再用时 XXX 已经被定义拉就不在包含这个头文件。条件指示符#ifndef检查预编译常量在前面是否已经被定义.如果在前面没有被定义,则条件指示符的值为真,于是从#inndef到#endif之间的所有语句都被包含进来进行处理.相反,如果#inndef指示符的值为假,则它与#endif指示符之间的行将被忽略.条件指示符#ifndef的最主要目的是防止头文件的重复包含和编译。

              深入:条件编译

       预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。 条件编译有三种形式,下面分别介绍:

             1. 第一种形式:

             #ifdef 标识符
             程序段1
             #else
             程序段2
             #endif  

       它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:
             #ifdef 标识符
             程序段

             #endif

              举例如下:
        #define NUM ok
        void   main()

        {
             struct stu
             {
                   int num;
                   char *name;
                   char sex;
                   float score;
             } *ps;
             ps=(struct stu*)malloc(sizeof(struct stu));
             ps->num=102;
             ps->name="Zhang ping";
             ps->sex='M';
             ps->score=62.5;
             #ifdef NUM
                   printf("Number=%d\nScore=%f\n",ps->num,ps->score);
             #else
                   printf("Name=%s\nSex=%c\n",ps->name,ps->sex);
             #endif
             free(ps);
        }  

       由 于在程序的第16行插入了条件编译预处理命令,因此要根据NUM是否被定义过来决定编译那一个printf语句。而在程序的第一行已对NUM作过宏定义, 因此应对第一个printf语句作编译故运行结果是输出了学号和成绩。在程序的第一行宏定义中,定义NUM表示字符串OK,其实也可以为任何字符串,甚至 不给出任何字符串,写为: #define NUM 也具有同样的意义。 只有取消程序的第一行才会去编译第二个printf语句。读者可上机试作。

              2. 第二种形式:
              #ifndef 标识符
              程序段1
              #else
              程序段2
              #endif  
       与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。这与第一种形式的功能正相反。

       可以理解为 if not define

              3. 第三种形式:
              #if 常量表达式
              程序段1
              #else
              程序段2
              #endif  

       它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能
              举例如下:
        #define R 1
        void main()

        {
             float c,r,s;
             printf ("input a number: ");
             scanf("%f",&c);
             #if R
             r=3.14159*c*c;
             printf("area of round is: %f\n",r);
             #else
             s=c*c;
             printf("area of square is: %f\n",s);
             #endif
        } 

       本 例中采用了第三种形式的条件编译。在程序第一行宏定义中,定义R为1,因此在条件编译时,常量表达式的值为真,故计算并输出圆面积。上面介绍的条件编译当 然也可以用条件语句来实现。但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1或程序段 2,生成的目标程序较短。如果条件选择的程序段很长, 采用条件编译的方法是十分必要的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
深入学习SAP UI5框架代码系列之三:HTML原生事件 VS UI5 Semantic事件
深入学习SAP UI5框架代码系列之三:HTML原生事件 VS UI5 Semantic事件
4 0
第一次体验阿里云
信息管理与信息系统属于管理科学与工程类专业,管理学侧重于信息系统管理,工学侧重于计算机科学与技术。该专业学生主要学习经济、管理、数量分析方法、信息资源管理、计算机及信息系统方面的基本理论和基本知识,培养能在国家各级管理部门、工商企业、金融机构、科研单位等部门从事信息管理以及信息系统分析、设计、实施管理和评价等方面的高级专门人才。
6 0
本地开发好的 SAP Fiori Elements 应用,如何部署到 ABAP 服务器上?
这是 Jerry 2021 年的第 29 篇文章,也是汪子熙公众号总共第 300 篇原创文章。 之前 Jerry 的两篇文章,分别介绍了如何在本地使用 Visual Studio Code 创建一个 SAP Fiori Elements 应用,以及使用 Fiori Elements Controller Extension 理念,对该 Fiori Elements 应用进行二次开发的具体步骤。
4 0
深入学习SAP UI5框架代码系列之二:UI5 控件的渲染器
深入学习SAP UI5框架代码系列之二:UI5 控件的渲染器
5 0
答网友提问:使用 SAP Fiori Tools 创建的 Fiori Elements 应用,如何进行二次开发?
这是 Jerry 2021 年的第 28 篇文章,也是汪子熙公众号总共第 299 篇原创文章。 Jerry 之前的文章 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用,介绍了如何使用 Visual Studio Code,创建 SAP Fiori Elements 应用。
5 0
通过最简单的button控件,深入学习SAP UI5框架代码系列之零
通过最简单的button控件,深入学习SAP UI5框架代码系列之零
8 0
一个用于SAP UI5学习的脚手架应用,没有任何后台API的依赖
一个用于SAP UI5学习的脚手架应用,没有任何后台API的依赖
4 0
SAP Fiori 应用里图标(Icon)的渲染原理和使用技巧
这是 Jerry 2021 年的第 27 篇文章,也是汪子熙公众号总共第 298 篇原创文章。 近日,一位 SAP 合作伙伴的开发人员,向我咨询一个关于 SAP Fiori 应用里图标的使用问题。 这位开发人员在 SAP 某标准 Fiori 应用里,发现了一个图标(例如下图红色高亮区域所示的图标), 希望在自己开发的 Fiori 应用里也使用这个图标,但是不知道其对应的 sap-icon:// 属性值。
6 0
深入学习SAP UI5框架代码系列之八:谈谈 SAP UI5 的视图控件 ID,以及 SAP UI5 视图和 Angular 视图的异同
今天是 2021 年 4 月 27 日,周二,SAP 全球心理健康日。SAP 全球的员工,今天放假一天。
6 0
如何使用原生的 JavaScript 代码,触发 SAP UI5 按钮控件的点击事件处理函数
我有个 UI5 按钮,想用原生 js 去触发 click 事件。在 dom 上检测到 click 已经触发了,但是按按钮的动作响应没有发生。请问如何解决,谢谢。
5 0
+关注
144
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载