Visual Studio 防止头文件重复包含

最后更新于:2020-04-17 21:20:30

一.头文件重复包含编译器报错

1.简单的理解头文件重复包

假如头文件里有一行

int a=1;

包含两次就变成了

int a=1;
int a=1;

于是变量重复定义,编译器就会报错,函数同理;

2.老流氓的理解头文件重复包

你用过的套套肯定不会翻过来再用一遍

 

 

二.通过宏定义解决头文件重复包含

1.通过 #ifndef / #define 解决头文件重复包含

#ifndef __XXX_H__
#define __XXX_H__

int a=1;

#endif

上面的伪代码如下:

如果(没有定义宏__XXX_H__)
{
    那么直接定义宏__XXX_H__
    定义变量a 并且赋值为 1
}
结束程序

 

假如第一次包含时,由于没有定义宏 __XXX_H__,所以做了两件事,定义宏 __XXX_H__,然后定义 int a = 1;

假如第二次包含时,由于已经定义宏 __XXX_H__,所以啥都不做;

假如第N次包含时,由于已经定义宏 __XXX_H__,所以啥都不做;

整个过程,无论头文件被包含多少次,变量 a 只被定义一次,不会有重复包含重复定义的问题存在!

 

2.通过 #pragma once 解决头文件重复包含

#pragmaonce 是上述方式的简写,好处是再也不会有两个头文件因为使用了同样的__XXX_H__而被忽略了

#pragmaonce

 ... ... // 声明、定义语句

 

 

三.通过插件 Visual Assist 设置快捷键解决文件重复包含

虽然上面两种方式都能解决C/C++头文件重复包含冲突问题,但是还有一种更快捷的方法,直接通过 Visual Assist 设置快捷键完成,操作步骤如下:

1.安装插件 Visual Assist

详细的安装流程请参考:安装Visual Studio插件Visual Assist

 

2.打开VS,找到 VAssistX 选项

选择顶部菜单的  VAssistX    ->  Code Generation and Refactoring  ->  Edit Refactoring Snippets

3.设置模板内容

选择 Type  –>  All by shortcut,新建一个快捷方式: //t  (快捷键:仅供参考,怎么顺手怎么来)

 

头文件模板内容如下:

#ifndef __FILE_BASE_UPPER_H__ //表示根据文件名字定义宏 
#define __FILE_BASE_UPPER_H__ 
end 
#endif //__FILE_BASE_UPPER_H__

 

 

4.点击 OK,设置完成

 

5.快捷键测试

打开vs,创建任意工程,添加头文件,使用快捷键 //t,例如,我项目添加了一个test.h文件,然后使用快捷键 //t,如下:

#ifndef __TEST_H__
#define __TEST_H__

#endif  //__TEST_H__

 

 

推荐使用方法三,因为 Visual Assist 设置快捷键操作起来更方便快捷, Visual Assist 插件不仅能解决头文件重复包含问题,还能通过快捷键设置文件版权信息和作者信息,参考文章:Visual Studio 设置文件版权信息

 

 

猜你喜欢:

1.安装 Visual Studio 2015

2.安装 Visual Studio 插件 Visual Assist

3.设置 Visual Studio字体/背景/行号

4.彻底卸载 Visual Studio 2008

5.彻底卸载 Visual Studio 2013/2015

 

转载请注明猿说编程 » C/C++教程 » Visual Studio 防止头文件重复包含



技术交流、商务合作请直接联系博主扫码或搜索:猿说编程

python/C++教程

猿说编程微信公众号 扫一扫关注

 

 

赞赏

微信赞赏支付宝赞赏