zoukankan      html  css  js  c++  java
  • #pragram与#ifndefine防止头文件重复编译的区别

    #pragram once与#ifndefine防止头文件重复编译的区别

    #ifndefine...#define...#endif是C/C++语言的宏定义,通过宏定义可以避免头文件重复包含。

      优点:与编译器无关,因此可以跨平台使用;

      缺点:(1)对于每一个头文件都必须有独特的宏定义名称,一旦出现多个头文件宏定义相同,同时包含这这些个头文件时就会导致仅第一个头文件包含成功;如下列代码显示,Tesh.cpp中包含了File1.h与File2,h两个头文件,但是两个头文件在定义时宏定义都是FILE_H,故File1.h包含成功同时但File2.h包含失败。
         (2)需要打开每个文头文件判断宏定义名称;

    File1.h
    #ifndef FILE_H
    #define FILE_H
    
    ...\program codes
    
    #endif
    
    File2.h
    #ifndef FILE_H
    #define FILE_H
    
    ...//program codes
    
    #endif
    
    Test.h
    #include "File1.h"
    #include "File2.h"
    
    ...//program codes
    

    #pragram once由编译器来避免头文件重复包含;

      优点:该方式通过物理地址来判定同一文件,故不用打开每个头文件,相比#ifndef节省编译时间;
      
      缺点:(1)与编译器有关,有的编译器不支持,不适合在跨平台的程序中使用;
         (2)当同一文件有多个拷贝(则物理地址不同),同时包含这些头文件时编译器无法避免这种重复包含的情况;

  • 相关阅读:
    [51nod1384]全排列
    [51nod1256]乘法逆元
    [51nod1106]质数检测
    [51nod1058]求N!的长度
    2017 world final
    [Manacher+bit]Palindrome
    [hdu3068]最长回文(Manacher算法)
    [trie]字典树模板
    [凸包]Triangles
    LintCode-366.斐波纳契数
  • 原文地址:https://www.cnblogs.com/silentteen/p/7481778.html
Copyright © 2011-2022 走看看