C语言 define 防止头文件重复包含 - C语言零基础入门教程

目录

  • 一.头文件重复包含编译器报错
    • 1.简单的理解头文件重复包
    • 2.老流氓的理解头文件重复包
  • 二.通过宏定义解决头文件重复包含
    • 1.通过 #ifndef / #define 解决头文件重复包含
    • 2.通过 #pragma once 解决头文件重复包含
  • 三.通过插件 Visual Assist 设置快捷键解决文件重复包含
    • 1.安装插件 Visual Assist
    • 2.打开 VS,找到 VAssistX 选项
    • 3.设置模板内容
    • 4.点击 OK,设置完成
    • 5.快捷键测试
  • 四.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

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

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. C 语言 数组下标越界和内存溢出区别
  2. C 语言 指针声明和定义
  3. C 语言 指针 p++ / p–
  4. C 语言 p++/§++/_(p++)/_p++
  5. C 语言 使用指针遍历数组
  6. C 语言 指针和数组区别
  7. C 语言 指针数组和数组指针区别
  8. C 语言 空指针 NULL
  9. C 语言 void 指针
  10. C 语言 野指针
  11. C 语言 函数值传递和址传递
  12. C 语言 函数缺省参数
  13. C 语言 函数不定长参数
  14. C 语言 函数指针
  15. C 语言 指针函数
  16. C 语言 回调函数 callback
  17. C 语言 typedef
  18. C 语言 define 定义常量
  19. C 语言 define 防止头文件重复包含

未经允许不得转载:猿说编程 » C 语言 define 防止头文件重复包含

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fadeToggle()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

一篇文章带你快速理解微服务架构,由浅入深带你走进微服务架构的核心

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;Java和Android架构什么是微服务首先微服务并没有一个官方的定义&#xff0c;想要直接描述微服务比较困难&#xff0c;我们可以通过对比传统WEB应用&#xff0c;来理解什么是微服务。传统的WEB应用核心分为业务逻…

C语言 define 定义函数 - C语言零基础入门教程

目录 一.define 简介二.define 定义函数 1.define 定义不带参数的函数2.define 定义带参数的函数 三.define 定义函数陷阱 1.define 函数陷阱一2.define 函数陷阱一解决办法3.define 函数陷阱二4.define 函数陷阱二解决办法 四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目…

jq之mouseleave()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

C语言 define 定义函数(多行书写) - C语言零基础入门教程

目录 一.define 简介二.define 定义多行函数 1.简单使用2.经典案例 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.define 简介 C 语言中&#xff0c;除了可以用 #define 定义一个标识符来表示一个常量&#xff0c;还可以用 #define 定义函…

云存储精华问答 | 云计算和云存储是什么关系?

戳蓝字“CSDN云计算”关注我们哦&#xff01;早在2006年谷歌推出的“Google101计划”时&#xff0c;“云”的概念及理论被正式提出&#xff0c;随后亚马逊、微软、IBM等公司宣布了各自的“云计划”&#xff0c;云存储、云安全等相关的云概念相继诞生。今天&#xff0c;我们就一…

jq之mouseenter

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

C语言 typedef 和 define 区别 - C语言零基础入门教程

目录 一.typedef 简介 1.typedef 简化复杂的类型声明 A.定义普通变量B.定义函数指针C.定义结构体 2.定义与平台无关的类型 二.define 简介三.typedef 和 define 区别 1.执行时间不同2.功能有差异3.作用域不同 四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C …

边缘计算精华问答 | 为什么需要边缘计算?

戳蓝字“CSDN云计算”关注我们哦&#xff01;云计算就像是天上的云&#xff0c;看得见摸不着&#xff0c;像章鱼的大脑&#xff0c;边缘计算就类似于八爪鱼的那些小爪子&#xff0c;一个爪子就是一个小型的机房&#xff0c;靠近具体的实物。那么&#xff0c;云计算的下一个爆点…

jq之事件

1.点击事件 $("p").click(); 2.dblclick()双击事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jqu…

C语言 #pragma once - C语言零基础入门教程

目录 一.#pragmaonce 宏简介二.#pragmaonce 与 #ifndef 使用 1.#ifndef2.#pragmaonce 三.#pragmaonce 与 #ifndef 区别 1.#ifndef2.#pragma once 四.#pragmaonce 与 #ifndef 联系五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.#pragmaonce …

jq之省市区级联插件

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>省市区</title><link rel"stylesheet" href"https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css&qu…

8 年后重登王座,Python 再度成为 TIOBE 年度编程语言

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;开源中国社区全球知名的编程语言流行度排行榜网站 TIOBE 于近日宣布&#xff1a;Python 成为 2018 年度编程语言&#xff0c;理由如下&#xff1a;2018 年&#xff0c;Python 语言上升了 3.62&#xff05; &…

C语言 #include <> 与 #include “” 区别 - C语言零基础入门教程

目录 一.什么是头文件二.#include <>三.#include “”四.#include <> 与 #include “” 区别五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 在 C 语言或者 C 中&#xff0c;包含头文件的是会使用 #include , 可能有小伙伴会问 头文…

jq之方法链接

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

要闻君说:Intel要“起底”新任CEO了?微软停止支持Win 7?OPPO加入WPC无线充电联盟,15W无线闪充技术呼之欲出!...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨&#xff0c;大家好&#xff01;偶是要闻君。咱们还是闲话少叙&#xff0c;边听边看近日有啥大新闻鸭&#xff01;文/要闻君图片来源网络空缺半年多&#xff0c;Intel或在10天内任…

C语言 const 修饰变量 - C语言零基础入门教程

目录 一.const 简介二.const 实战 1.使用 const 修饰变量必须初始化2.使用 const 修饰变量不初始化3.修改 const 修饰变量的值 三.重点提示四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.const 简介 const 是 constant 的缩写&#xff0c;…

Ubuntu上安装Hadoop集群

戳蓝字“CSDN云计算”关注我们哦&#xff01;前面我们介绍了在Ubuntu上安装Hadoop单机版。但是我们知道&#xff0c;Hadoop在实际工作中都是以集群的形式存在的&#xff0c;毕竟需要处理大量的数据&#xff0c;单机的处理速度显然不能满足。所以这篇文章我们就来介绍一下如何在…

jq之无callback,有 alert hide

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

C语言 const 修饰指针 - C语言零基础入门教程

目录 一.const 简介二.const 修饰指针 1.const int *p2.int const *p3.int * const p4.const int * const p 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.const 简介 const 是 constant 的缩写&#xff0c;意思是“恒定不变的”&#xf…