C 头文件中的外部定义常量
Externally defined constant in C header file
我有一个在包含二维数组(泳道)的头文件中定义的结构。
我想在编译时定义数组的大小,例如通过设置环境变量。
#ifndef GAMEBOARD_H
#define GAMEBOARD_H
struct gameboard
{
int lanes[4][4];
int isWonBy;
int isFinished;
int nextPlayer;
};
struct gameboard *put(struct gameboard *board, int laneIndex);
#endif
我想在运行时在此结构的所有实例之间保持数组大小不变,但在编译时定义该大小,而不必每次都更改源代码。数组的高度和宽度应该是分开的,并且有默认值。
#ifndef LANES_DIMENSION
#error "You must define LANES_DIMENSION at compile time!"
#endif
struct gameboard
{
int lanes[LANES_DIMENSION][LANES_DIMENSION];
int isWonBy;
int isFinished;
int nextPlayer;
};
GCC:
gcc -DLANES_DIMENSION=10 source.c
MSVC:
cl /DLANES_DIMENSION=10 source.c
另一种方法是只为这个值创建一个小 array_size.h
文件。 #include
它在 gameboard.h
中并在编译时重新生成它,例如批处理文件如:
@echo #define ARRAY_SIZE %ENV_DEF% >array_size.h
我有一个在包含二维数组(泳道)的头文件中定义的结构。 我想在编译时定义数组的大小,例如通过设置环境变量。
#ifndef GAMEBOARD_H
#define GAMEBOARD_H
struct gameboard
{
int lanes[4][4];
int isWonBy;
int isFinished;
int nextPlayer;
};
struct gameboard *put(struct gameboard *board, int laneIndex);
#endif
我想在运行时在此结构的所有实例之间保持数组大小不变,但在编译时定义该大小,而不必每次都更改源代码。数组的高度和宽度应该是分开的,并且有默认值。
#ifndef LANES_DIMENSION
#error "You must define LANES_DIMENSION at compile time!"
#endif
struct gameboard
{
int lanes[LANES_DIMENSION][LANES_DIMENSION];
int isWonBy;
int isFinished;
int nextPlayer;
};
GCC:
gcc -DLANES_DIMENSION=10 source.c
MSVC:
cl /DLANES_DIMENSION=10 source.c
另一种方法是只为这个值创建一个小 array_size.h
文件。 #include
它在 gameboard.h
中并在编译时重新生成它,例如批处理文件如:
@echo #define ARRAY_SIZE %ENV_DEF% >array_size.h