zoukankan      html  css  js  c++  java
  • #pragma once和#ifndef用法

    参考:https://www.cnblogs.com/qiang-upc/p/11407364.html

    1.两者都是用于为了同一个头文件在项目中被应用多次造成的变量重定义等问题

    2.#pragma写在头文件的第一行保证该头文件不会被引用两次,#ifndef的用法如下可以在头文件的任意位置,保证其中包裹的代码内容不被重复使用,一般清理包裹头文件中的全部代码:

    #ifndef _TEST_H_(自定义的宏名称)
    #define _TEST_H_(自定义的宏名称)
    int a=10;
    int x =10;
    #endif
     

    3.#pragma这种用法比#ifndef出现得早,所以有些比较老得编译器可能不支持#pragma,也就是#ifndef的兼容性更好

    4.#ifndef可以只将头文件的某段代码包含在内以保证该段代码内容不被重复引用,而#pragma则一般写在头文件的顶端只能保证整个头文件不被重复引用

    5.#ifndef后面需要接一个自己定义的宏名称,通过保证项目中不允许存在两个同名的宏来保证其中包裹的代码只能被引用一次,如果项目中有两个不同的头文件但使用了同样的宏名称,则会出现有一个头文件中的内容不能被引用的问题

    6.#pragma是根据头文件的名称来保证项目中不允许引用两个同名的头文件,如果项目中两个不同名称的两个头文件,但是两个头文件的内容一样,还是会出现重复定义的问题

  • 相关阅读:
    SendInput模拟键盘输入的问题 <转>
    tinyMce3.21 使用随笔
    ORM的一些思考
    VS2008 , 1330 , 数字签名错误.
    .Net Reflector 工具 过期后使用小工具。
    就当是一个新的设计模式!
    OpenSUSE 11 下 Mono 2 开发笔记。
    转:)CNBlogs引用第三方组(控)件明细^_^
    DBLinq ,没实现 Log !
    DotNet 的一些知识点
  • 原文地址:https://www.cnblogs.com/maycpou/p/14445374.html
Copyright © 2011-2022 走看看