zoukankan      html  css  js  c++  java
  • 一点收获

    1、关于#ifndef   #define   #endif           (http://blog.csdn.net/abc5382334/article/details/18052757)感谢这位。

     想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?

    是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?

    是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?

        其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include "a.h" 和#include "c.h"此时就会造成c.h重复引用。

    头文件被重复引用引起的后果:

    有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。
    有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。

    下面给一个#ifndef/#define/#endif的格式:

        #ifndef A_H意思是"if not define a.h"  如果不存在a.h

        接着的语句应该#define A_H  就引入a.h

        最后一句应该写#endif   否则不需要引入。

    一般用在.h文件中,里面都是宏定义。

                                                                注意定义的时候需要大写,点号用下划线代替。

    2、关于份文件编写时的‘.h’和‘.c’文件

    这样做目的是为了实现软件的模块化
    使软件结构清晰,而且也便于别人使用你写的程序

    纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #include 完全等价 于把 .h 文件 Ctrl-C Ctrl-V 到 .c 中

    .h 中应该都是一些宏定义和变量、函数声明,告诉别人你的程序“能干什么、该怎么用”
    .c 中是所有变量和函数的定义,告诉计算机你的程序“该怎么实现”

  • 相关阅读:
    读《见识》 | 当别人扇了你一巴掌
    Java集合类
    Java数据结构简述
    Java加密算法
    Java JDK与JRE
    Java String、StringBuilder、StringBuffer[笔记]
    Java同步(Synchronization)
    Java断言(Assertion)
    Java strictfp
    Java Native Interface(JNI)
  • 原文地址:https://www.cnblogs.com/qsyll0916/p/6241115.html
Copyright © 2011-2022 走看看