VS编程学习之#ifndef与#pragma once

#ifndef与#pragma once都用于避免同一个.h头文件被include多次
            .h头文件头文件一般包含函数定义,变量定义等,多次#include则会在导致重定义错误
            1.#ifndef用法
 1
 2
 3
 4
            
            
#ifndef _EXAMPLE_H //_EXAMPLE_H可以为任何字符,这里与example.h相对应为_EXAMPLE_H
#define _EXAMPLE_H
...... //原来example.h的内容写在这里
#endif
 来自CODE的代码片
example.h
 
                       第一次include该.h文件的时候,由于宏_EXAMPLE_H没被定义, #ifndef _EXAMPLE_H 语句为真,将执行 #define _EXAMPLE_H 语句与其后的 example.h文件内容 当再次include该.h文件时,由于第一次已经定义了_EXAMPLE_H,故将跳过定义_EXAMPLE_H与执行example.h 文件内容步骤。这样便可以避免多次include同一.h文件导致的多重定义错误。
               2.#pragma once用法
 1
 2
             
             
#pragma once
...... //原example.h文件内容
 来自CODE的代码片
example2.h
               #pragma once 指示编译器对该.h头文件只include一次,多次include编译器将会忽略,从而保证该 文件只被包含一次,避免重定义错误。
               3.#ifndef与#pragma once的区别
  • #ifndef:依赖于宏名不冲突,如示例中的_EXAMPLE_H这个宏,这种方法可以保证同一内容文件不会被包含多次。但,如果宏_EXAMPLE_H在其他文件中被定义的话,也就是发生冲突了,就会导致该.h文件存在,但编译器找不到的错误。
  • #pragma once:能保证同一文件不被include多次,不能保证同一内容文件不被多次include,如将example.h文件的里一份拷贝命名为examplecopy.h,虽然则这两个文件内容相同,但#pragma once不能保证其不被同时include.   

  • 推荐使用#ifndef。 
#pragma once编译器相关,受编译器限制
推荐使用#ifndef
转载自:http://blog.csdn.net/lovecodeless/article/details/23366255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值