zoukankan      html  css  js  c++  java
  • VC++工程头文件重复和循环引用

    复杂工程中头文件众多,很容易发生包含顺序、重复引用以及循环引用导致的编译链接错误!最近整理工程中文件引用时遇到不少这方面的问题!一般来说,包含顺序问题会导致某些类型、函数等无定义,只要对工程有功能、框架性的了解,这方面的问题很容易避免!

         重复引用在几乎所有的工程中随处可见,如果头文件格式不对,重定义的错误提示跃然纸上!一般来说,有两种方式可以在重复引用头文件而不发生错误:

         1、头文件中加上#pragma once

          这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次。

         2、#ifndef,#define,#endif用来防止某个宏被多次定义,防止头文件重复编译。

             两者差别在于:#pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过

             现在基本上已经是每个编译器都有这个定义了;#ifndef,#define,#endif这个是C++语言相关,这是C++语言中的宏定义,通

             过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式。

          头文件循环引用在包含过程中形成了循环,彼此依赖,去除这类错误需要打破这个循环,MFC中可以在预编译文件中包含头文件消除这种情况!不过从代码的有效性和效率方面,应该避免在Include中引用其他头文件,需要引用其他类和类型的地方尽量采用前向声明前向声明不要类型的定义,可以提高编译效率,降低文件间的依赖性!


  • 相关阅读:
    【干货】MySQL数据库开发规范
    springboot入门
    移动端可拖拽效果
    利用视口单位实现适配布局
    最新前端开发工程师面试题
    12个HTML和CSS必须知道的重点难点问题
    win10升级后蓝牙不见了,设备管理器里没有,多了个串行控制器里的未知USB设备?
    安装vue-cli时出现的错误,cmd 卡住
    svg 认识及动画
    banner图片全屏显示
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318583.html
Copyright © 2011-2022 走看看