我正在尝试用 C 实现图数据结构。
我有一个
.h
文件,其中包含以下声明:
// Graph.h
#define _GRAPH_H
typedef struct
{
unsigned short isExists : 1;
WEIGHT_TYPE weight;
} Weight;
typedef struct
{
Weight adjacencyMatrix[VERTICES_NUM][VERTICES_NUM];
VERTEX_TYPE vertices[VERTICES_NUM];
} Graph;
我希望能够声明一个
Init
函数(在 .c
文件中),它将 VERTICES_NUM
作为参数(这样我就能够声明向量,而无需为 的所有用法定义恒定数量的顶点)图表)。
我知道我可以在包含
.h
文件之前定义这些常量,但我正在寻找更好的解决方案。
注意:我试图避免在这里使用任何动态分配。
编辑:
我想到了这个用法:
#include "Graph.h"
void main()
{
Graph g;
Init(&g, 10, char); // 10 vertices and vertex type is char
}
我知道我可以在包含 .h 文件之前定义这些常量,但是 我正在寻找更好的解决方案。
通常使用两种方法。
使用常见定义(例如您的尺寸)创建
.h
文件,并在需要时包含此文件。
使用编译器命令行选项。 gcc 有
-D
选项 ('-DVERTICES_NUM=10`)