头文件保护符&头文件中的“”和<>- -C++

头文件保护符&头文件中的“”和<>


参考:
#pragma once
wiki:include guard

头文件保护符

在C++中我们写头文件时经常需要#include来包含其他头文件。头文件定义的实体经常使用其他头文件的内容,有时候会出现一个头文件被多次包含进同一源文件。

例如
1.有一个头文件log.h(其中定义了一个struct),如果在一个cpp文件中多次包含此头文件,会出现重复定义的情况。
2.有一个头文件log.h(其中定义了一个struct),另一个头文件test.h((其中定义了一个struct))包含了log.h,如果在一个cpp文件中包含这两个头文件,则会出现重复定义的情况。

#pragma once

这种方式是C++ 11新标准中的一部分
支持#pragma once的编译器
基本上为所有编译器支持,而且比下面这种方式更加高效。

#ifndef XXX
#define XXX
#endif

测试代码:
log.h

//#pragma once

  struct Haha{

};

test.cpp

#include "log.h"
#include "log.h"
using namespace std;

int main()
{
  return 0;
}

error
redefinition of 'struct Haha’

常规方法(#ifndef…)

测试代码:
log.h

#ifndef _LOG_
  #define _LOG_
  struct Haha{

};

#endif // _LOG_

test.cpp

#include "log.h"
#include "log.h"
using namespace std;

int main()
{
  return 0;
}

error
redefinition of 'struct Haha’

头文件包含

头文件包含一般有两种方式,“ ”和< >
这两种方式的区别:

#include <iostream>	//库提供的头文件
#include "../iostream"	//库提供的头文件,包含路径

//Log.h为用户自定义头文件
#include <Log.h>
#include "Log.h"
#include "../Log.h" 

一般来说,<>用于标准头文件的使用,直接使用头文件名即可。
" "可以用于用户自定义头文件的使用,可以包含路径。

" "应用的范围更广,既可以是标准头文件,也可以是自定义头文件。既可以直接包含文件名,也可以设置路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值