C lang: C语言中两个头文件引入相同的头文件(Header.h)

C lang: C语言中两个头文件引入相同的头文件(Header.h)

[var1]

For example:

Header.h:

#pragma once

#define ERROR -1

#define MaxVertexNum 100

#define INFINITY 65535

#define ESIZE sizeof(struct ENode)

typedef int Vertex;

typedef int WeightType;

typedef char DataType;

typedef int GraphType;// 建立图类型(0: 无向图; 1: 有向图)

typedef int Bool;

typedef enum {

False = 0,

True

} Status;

typedef struct ENode { /* 边定义 */

/* 有向边 */

Vertex V1;

Vertex V2;

WeightType Weight; /* 权重 */

} ENode, * Epointer;

void visit(Vertex v);

LGHeader.h:

#pragma once

#include "Header.h"

#define LGSIZE sizeof(struct LGNode)

#define ASIZE sizeof(struct AdjVNode)

typedef struct AdjVNode { /* 邻接点定义 */

Vertex AdjV; /* 邻接点下标 */

WeightType Weight; /* 对于网图边表,增加边权重Weight */

struct AdjVNode* Next; /* 指向下一个邻接点的指针 */

} AdjVNode, * Apointer;

typedef struct Vnode { /* 顶点表头结点 */

DataType Data; /* 顶点无数据,Data可以不出现 */

Apointer FirstEdge; /* 边表头指针 */

} AdjList[MaxVertexNum];

typedef struct LGNode { /* 图结点 */

int Nv; /* 顶点数 */

int Ne; /* 边数 */

AdjList G;// 邻接表

} LGNode, * LGpointer;

MGHeader.h:

#pragma once

#include "Header.h"

#define MGSIZE sizeof(struct MGraphNode)

typedef struct MGraphNode { /* 图结点定义 */

int Nv; /* 顶点数: VertexNum */

int Ne; /* 边数:EdgeNum */

WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */

DataType Data[MaxVertexNum]; /* 存储顶点的数据; 若无顶点数据, 此时Data[]可以不定义 */

} GNode, * MGpointer;

main.c:

#include

#include

#include

#include "LGHeader.h"

#include "MGHeader.h"

#pragma warning(disable:4996)

int main() {

printf("Hello world!");

return 0;

}

Result:

报变量重复定义错误!

在公共引入的 Header.h 中使用 预编译指令:

#pragma once

#ifndef HEADER_H

#define HEADER_H

#define ERROR -1

#define MaxVertexNum 100

#define INFINITY 65535

#define ESIZE sizeof(struct ENode)

typedef int Vertex;

typedef int WeightType;

typedef char DataType;

typedef int GraphType;// 建立图类型(0: 无向图; 1: 有向图)

typedef int Bool;

typedef enum {

False = 0,

True

} Status;

typedef struct ENode { /* 边定义 */

/* 有向边 */

Vertex V1;

Vertex V2;

WeightType Weight; /* 权重 */

} ENode, * Epointer;

void visit(Vertex v);

#endif

一切正常!返回正确结果!

注:

如果两个头文件互相引用, 则最好将其中的一个头文件拆分, 而后用另外2个头文件引用拆分出的公共头文件

[var1]

https://www.cnblogs.com/RGBTH/p/13371357.html

C lang: C语言中两个头文件引入相同的头文件(Header.h)相关教程

C语言两个同名头文件,C lang: C语言中两个头文件引入相同的头文件(Header.h)相关推荐

  1. python怎么安装打开文件不存在怎么办呢_如果文件不存在,Python中的open()不会创建文件...

    16 个答案: 答案 0 :(得分:712) 您应该open使用w+模式: file = open('myfile.dat', 'w+') 答案 1 :(得分:112) 以下方法的优点是,即使在路上引 ...

  2. python交换两列的位置_如何更改 pandas dataframe 中两列的位置

    如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...

  3. vue前台导出zip文件_在Vue.js中使用JSZip实现在前端解压文件的方法_心病_前端开发者...

    1.在 action="//jsonplaceholder.typicode.com/posts/" :before-upload="handleBefore" ...

  4. ldf文件怎么储存到mysql中_如何转移数据库MDF和LDF文件

    我们可以很轻易地使用SQL Server来创建一个数据库,创建的数据库实例将存储在指定的默认位置(不一定是C盘,可以手动变更默认存储位置).假设此时数据库实例创建在了C盘中的默认位置,亦即是与数据库安 ...

  5. 如何在Spring-Boot项目中配置资源文件夹?视频文件不想放在项目中,怎么做?前台上传文件后台如何访问?什么是资源文件夹?

    如何在Spring-boot项目配置资源文件夹 前言 2.properties文件 二.访问 1.放入资源 2.访问 方式1 方式2 前言 在什么情况下需要配置资源文件夹? 当项目需要读取静态文件夹以 ...

  6. MATLAB求图片两圆圆心,求助:如何求此图中两圆的圆心距?

    对于你给出的图片,我根据之前提到的思路编写了以下程序.感觉还蛮准的.这个程序只能用于两圆相交的情况.当小圆在大圆内部时,需要在其中加以判定.仅供参考. clear;clc c = imread('1. ...

  7. 克隆git文件_如何在Git中克隆,修改,添加和删除文件

    克隆git文件 在本系列有关Git入门的第一篇文章中 ,我们创建了一个简单的Git存储库,并通过将其连接到计算机将文件添加到其中. 在本文中,我们将学习有关Git的其他一些知识,即如何在Git存储库中 ...

  8. 文件在另一个程序中打开,无法删除~【删除文件被占用问题】(保姆级教程,五种解决办法~)

    一,前言 当我们操作电脑要对一个文件进行删除的时候,很多时候都会提示你说你的文件被占用,不能够删除,这个时候我们就非常的苦恼了. 二,解决办法 方法一: 这说明这个文件被打开了,我们需要将这个文件关闭 ...

  9. java 两个日期的天数_计算Java 8中两个日期之间的天数

    我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子. 我也知道JodaTime库,但我想要一种没有外部库的工作方式. 功能需要抱怨这些限制: 防止日期保存时间错误 ...

最新文章

  1. 使用JMX监控Kafka
  2. C语言之prinf的用法
  3. Bootstrap4 导航栏元素居右
  4. Winform、WPF、Silverlight、MFC区别与联系
  5. pycharm 格式化代码
  6. yii 全选 php,Yii2.0实现的批量更新及批量插入功能示例
  7. java mysql乱码_41、java与mysql乱码的问题
  8. CSP2020洛谷P7077:函数调用
  9. wincc怎么做数据库_wincc 数据库
  10. 微盟数据已经全面找回 并公布商家赔付计划
  11. yuan的第二次随笔
  12. EViews8.0程序安装及注意事项
  13. js封装ajax方法
  14. Mugeda (木疙瘩)H5案例课—交互动画类H5制作-岑远科-专题视频课程
  15. 提高前端生产效率(PxCook工具推荐)
  16. 适用于软件工程的定律Augustine's laws
  17. Python --- Numpy 创建n维数组基本方法
  18. 合并时显示是无效的m3u8文件_m3u8合并,如何合并m3u8文件
  19. 关于调用Excel.Application报错的解决方法
  20. 怎么提高android播放器的网络带宽,使用GSYVideoPlayer增加显示实时网速

热门文章

  1. 【To Do!】程序员面试金典——18.8子串判断
  2. NOI2019 SX 模拟赛 no.5
  3. Linux mysqladmin 命令
  4. jQuery的立即调用表达式
  5. 程序员为什么热衷造轮子?
  6. CDH(Cloudera)与hadoop(apache)对比
  7. (数据挖掘-入门-2)相似度衡量的方法
  8. 超大文件中查找关键字
  9. 程序员常见的健康问题
  10. 32岁男子沉迷网游十年离世 临终称真有意思