zoukankan      html  css  js  c++  java
  • VC中#ifdef和#pragma once的区别

    有两个头文件: a.h和b.h

    //a.h

    //a.h

    #ifndef _a_h
    #define _a_h

    void amsg();

    #endif

    //b.h



    //b.h
    #pragma once
    void bmsg();

    它们的源代码为:

    a.cpp

    #include <STDIO.H>
    #include "a.h"
    void amsg()
    {
    printf("Call a.msg()\n");
    }

    b.cpp

    #include "b.h"
    #include <STDIO.H>
    void bmsg()
    {
    printf("Call b.msg()\n");
    }

    调用Main.cpp

    #include "a.h"
    #include "b.h"
    #include "a.h"
    #include "b.h"


    void main()
    {
    amsg();
    bmsg();
    }

    上面我们用到#ifndef .. #endif和#pragma once.

    a.h要打开两次,而b.h只打开一次即可。

    它们都是为了防止头文件被多次编译而存在。我们在调用时会发现它们的区别是:

    当多次调用同一个头文件时,如果用的是#ifdef的话,每次执行到#include时都会打开一次头文件,而用#pragma once是当这个头文件打开一次后就会被编译器记住,以后再调用此头文件时便不再打开。

    #pragma once是微软特用的。







  • 相关阅读:
    Spring 发生 has not been refreshed yet 异常
    rsyslog config
    grok
    阿里云态势
    Unity的asm笔记
    Unity2020或Unity2019安装后无法启动
    rider代码折叠
    使用rider调试lua
    MacType更好的字体渲染
    Unity字体和画面花屏处理
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/2307277.html
Copyright © 2011-2022 走看看