C语言两个同名头文件,C lang: C语言中两个头文件引入相同的头文件(Header.h)
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)相关推荐
- python怎么安装打开文件不存在怎么办呢_如果文件不存在,Python中的open()不会创建文件...
16 个答案: 答案 0 :(得分:712) 您应该open使用w+模式: file = open('myfile.dat', 'w+') 答案 1 :(得分:112) 以下方法的优点是,即使在路上引 ...
- python交换两列的位置_如何更改 pandas dataframe 中两列的位置
如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...
- vue前台导出zip文件_在Vue.js中使用JSZip实现在前端解压文件的方法_心病_前端开发者...
1.在 action="//jsonplaceholder.typicode.com/posts/" :before-upload="handleBefore" ...
- ldf文件怎么储存到mysql中_如何转移数据库MDF和LDF文件
我们可以很轻易地使用SQL Server来创建一个数据库,创建的数据库实例将存储在指定的默认位置(不一定是C盘,可以手动变更默认存储位置).假设此时数据库实例创建在了C盘中的默认位置,亦即是与数据库安 ...
- 如何在Spring-Boot项目中配置资源文件夹?视频文件不想放在项目中,怎么做?前台上传文件后台如何访问?什么是资源文件夹?
如何在Spring-boot项目配置资源文件夹 前言 2.properties文件 二.访问 1.放入资源 2.访问 方式1 方式2 前言 在什么情况下需要配置资源文件夹? 当项目需要读取静态文件夹以 ...
- MATLAB求图片两圆圆心,求助:如何求此图中两圆的圆心距?
对于你给出的图片,我根据之前提到的思路编写了以下程序.感觉还蛮准的.这个程序只能用于两圆相交的情况.当小圆在大圆内部时,需要在其中加以判定.仅供参考. clear;clc c = imread('1. ...
- 克隆git文件_如何在Git中克隆,修改,添加和删除文件
克隆git文件 在本系列有关Git入门的第一篇文章中 ,我们创建了一个简单的Git存储库,并通过将其连接到计算机将文件添加到其中. 在本文中,我们将学习有关Git的其他一些知识,即如何在Git存储库中 ...
- 文件在另一个程序中打开,无法删除~【删除文件被占用问题】(保姆级教程,五种解决办法~)
一,前言 当我们操作电脑要对一个文件进行删除的时候,很多时候都会提示你说你的文件被占用,不能够删除,这个时候我们就非常的苦恼了. 二,解决办法 方法一: 这说明这个文件被打开了,我们需要将这个文件关闭 ...
- java 两个日期的天数_计算Java 8中两个日期之间的天数
我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子. 我也知道JodaTime库,但我想要一种没有外部库的工作方式. 功能需要抱怨这些限制: 防止日期保存时间错误 ...
最新文章
- 使用JMX监控Kafka
- C语言之prinf的用法
- Bootstrap4 导航栏元素居右
- Winform、WPF、Silverlight、MFC区别与联系
- pycharm 格式化代码
- yii 全选 php,Yii2.0实现的批量更新及批量插入功能示例
- java mysql乱码_41、java与mysql乱码的问题
- CSP2020洛谷P7077:函数调用
- wincc怎么做数据库_wincc 数据库
- 微盟数据已经全面找回 并公布商家赔付计划
- yuan的第二次随笔
- EViews8.0程序安装及注意事项
- js封装ajax方法
- Mugeda (木疙瘩)H5案例课—交互动画类H5制作-岑远科-专题视频课程
- 提高前端生产效率(PxCook工具推荐)
- 适用于软件工程的定律Augustine's laws
- Python --- Numpy 创建n维数组基本方法
- 合并时显示是无效的m3u8文件_m3u8合并,如何合并m3u8文件
- 关于调用Excel.Application报错的解决方法
- 怎么提高android播放器的网络带宽,使用GSYVideoPlayer增加显示实时网速