`

C++巩固与知新----头文件保护符

    博客分类:
  • C++
c++ 
阅读更多
    首先,我非常激动,又来了iteye论坛。看了看自己原来写的几篇博客,那都是2013年的事了,并没有坚持下来,当然,也给自己找了个借口,学习太忙了。现在稍微清闲一点,我觉得还是有写博客的必要了。
    C++早在大一的时候就学过,前阵子为了考试也看过些许时间,但是,总的来说还是走马观花,现在重新研读《C++ PRIMER》一书,觉得获益匪浅,巩固中有知新。那么下面我就来探讨下几个有意思的地方吧:

1.头文件保护符
[b]#ifndef SALESITEM_H
#define SALESITEM_H
······//此处为内容
#endif
[/b]    终于知道这个是什么意思了: 条件指示#ifndef SALESITEM_H测试 SALESITEM_H 预处理器变量是否未定义。如果 SALESITEM_H 未定义,那么 #ifndef 测试成功,跟在 #ifndef 后面的所有行都被执行,直到发现#endif。相反,如果 SALESITEM_H 已定义,那么 #ifndef 指示测试为假,该指示和 #endif 指示间的代码都被忽略。
    为了保证头文件在给定的源文件中只处理过一次,我们首先检测 #ifndef。第一次处理头文件时,测试会成功,因为 SALESITEM_H 还未定义。下一条语句定义了 SALESITEM_H。那样的话,如果我们编译的文件恰好又一次包含了该头文件。#ifndef 指示会发现SALESITEM_H 已经定义,并且忽略该头文件的剩余部分。
这样就可以很好的避免头文件以及源文件变量的重复定义问题了

扩展:通过预处理器进行程序调试
    程序员在工作期间,需要进行大量的程序调试,这时候就需要一个简便快捷的方法(调试时可用,调试成功后可以一并去除)来调试程序。通过预处理器进行程序调试的方法如下:
Int main()
{
#ifndef  NDEBUG
···//代码
#endif
···
}
如上述程序,顾名思义,NDEBUG若没有定义则执行代码区,如果定义了NDEBUG则忽略包含的代码,所以在调试阶段,程序可以不定义NDEBUG,在程序调试成功将上交给客户时,可以加上NEDBUG定义以忽略调试部分,这是不是很方便呢!当然NEDBUG是一个特殊变量,大多数编译器都提供定义该变量的命令行选项:
                                 $cc -DNDEBUG main.c


(待续)
分享到:
评论

相关推荐

    c++类的继承与派生--实验报告.doc

    实验总结强调了学习C++语法、预先编写程序、记忆英文单词和标点符号的重要性,以及理解和运用类的继承与派生、构造函数、头文件关联、循环等核心概念。 通过这次实验,我们不仅深化了对C++面向对象编程的理解,还...

    Wrox.Professional.C++,4th.Edition

    第五部分“C++软件工程”则更多地关注软件开发的过程和方法,包括如何最大化软件工程方法、编写高效的C++代码、测试技巧、调试技巧、设计技术与框架的融入、设计模式的运用,以及跨平台和跨语言应用程序的开发。...

    c++经典代码大全.pdf

    - **C++11/14/17新特性**:了解最新的语言特性和标准库更新,如auto类型推导、范围for循环等。 ### 结论 “C++经典代码大全”作为一本全面涵盖C++基础知识和高级特性的书籍,为初学者和有一定经验的开发者提供了...

    Dev-c++ 5.11下载

    5. 掌握C++的内存管理,包括栈和堆的区别,以及何时使用`new`和`delete`操作符。 总之,Dev-C++ 5.11虽然不是最新的IDE,但它仍然可以作为学习和开发C++的有效工具。配合提供的PPT教程,无论是新手还是经验丰富的...

    C++入门经典(第10版)-沃特·萨维奇 (Walter Savitch).rar

    6. **动态内存管理**:通过new和delete操作符,C++允许程序员动态分配和释放内存,这是理解C++内存管理的重要部分。 7. **输入/输出流**:C++使用iostream库进行输入输出操作,如cin和cout。书中会详细讲解如何进行...

    《c++语言程序设计教程》习题及解答.docx

    【知识点详解】 1. C++语言基础: - C++是一种面向对象的编程语言,而C语言是它的前身,但C语言并非面向对象。 - 面向对象的特性包括封装性、...通过解答这些习题,学习者可以巩固C++语言的基础,并提升编程能力。

    c++学习笔记.pdf

    - 包含头文件:#include<iostream> 是C++标准输入输出流库。 - main函数:C++程序的入口点,必须有一个返回类型为int的main函数。 - 控制台输出:使用cout配合操作符。 - 控制台输入:使用cin配合>>操作符。 - ...

    c++新手学习指南,适合刚学c++的新手

    C++是一种强大的、通用的编程...在学习过程中,推荐使用Visual C++(VC)等IDE进行编程实践,结合实例和项目来巩固理论知识。同时,不断查阅资料、参考书籍、参与社区讨论,将有助于快速成长为一名熟练的C++开发者。

    c++程序设计初学者辅导书--易学c++

    12. **内存管理**:C++允许直接管理内存,如使用new和delete操作符分配和释放动态内存。理解内存管理有助于防止内存泄漏和提高程序效率。 13. **STL(Standard Template Library)**:STL是C++标准库的一部分,提供...

    C++程序设计习题大荟萃(免费下载).pdf

    《C++程序设计习题大荟萃》这本书涵盖了C++的基础知识,通过一系列的习题帮助读者巩固理解和应用C++语言。以下是根据书中的部分内容提炼的C++知识点: 1. **C++语言的概述**: - C++由Bjarne Stroustrup于1979年...

    C++语言程序设计教程课后习题

    - 提取符(>>)和插入符()是C++中用于I/O操作的重载运算符,可以连用以读写多个数据。 1.3 填空题: - C++的面向对象特性包括封装性、继承性和多态性。 - C++程序的主入口是main函数。 - C++程序由类和函数构成。...

    c++的基础知识,适合初学者

    【C++基础知识详解】 C++是一种强大的面向对象的编程语言,对于初学者来说,了解其基础知识至关重要。本文将深入探讨C++的基础概念,...同时,实践是学习编程的关键,编写和运行实际的C++程序将有助于巩固理论知识。

    C和C++程序员面试秘籍

    通过《C/C++程序员面试秘笈》的学习,开发者不仅可以巩固基础知识,还能提升解决问题的能力,更好地应对面试中的各种挑战。书中可能还会涵盖一些实际项目经验和面试技巧,帮助求职者在面试中脱颖而出。

    C++程序设计谭浩强版本的课件

    - 成员函数与成员变量:阐述类内部成员的访问控制修饰符(public、private、protected)。 - 构造函数与析构函数:介绍它们的作用以及何时需要显式定义这些特殊成员函数。 **第9章 关于类和对象的进一步讨论** -...

    C++经典程序100例

    "C++经典程序100例"这个文档集合了100个精心挑选的C++代码示例,旨在帮助初学者和进阶者深入理解和掌握C++的关键概念与技术。 1. **基础概念** - 变量和数据类型:C++支持基本数据类型(如int、float、char)以及...

    C++程序设计教程课后习题答案【钱能】清华版

    《C++程序设计教程》是C++初学者和进阶者的重要教材,由清华大学出版社出版,作者钱能。这本书深入浅出地介绍了C++编程语言的基础知识和高级特性,包括面向对象编程的概念和实践。课后习题是检验学习效果、巩固理论...

    C++习题解答(第5版)

    通过这些习题和解答,学习者可以巩固C++的基本概念,理解程序设计的原理,并逐渐掌握编程技巧。在实际编程中,应注意避免语法错误,理解各种数据类型和运算符的用法,以及如何有效地组织和调试代码。

    C++基础知识课件 PPT

    C++的主要特点是支持面向对象编程(OOP),包括数据封装、类与对象、继承、多态等概念。它的设计目标是提供一种既能够进行低级内存操作,又能够进行高效抽象的编程能力。 C++的基础知识包括以下几个核心部分: 1. ...

    C++核心编程技术,自学C++,C++好帮手

    7. **内存管理**:C++提供了动态内存分配(new和delete操作符)以及智能指针(如std::unique_ptr和std::shared_ptr),理解何时和如何管理内存是避免内存泄漏的关键。 8. **STL(标准模板库)**:STL是C++的标准库...

    高质量c++_c编程指南习题集(含答案).rar

    《高质量C++/C编程指南习题集》是一份针对C++和C语言学习者的宝贵资源,它旨在帮助读者深入理解和掌握这两种编程语言的核心概念、...同时,结合习题和答案进行实践,将理论与实际相结合,有助于加深理解并巩固所学。

Global site tag (gtag.js) - Google Analytics