我有一个在包含2D数组(通道)的头文件中定义的结构。 我想在编译时定义数组的大小,例如通过设置环境变量。
#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
我想在运行时期间将数组保持为此结构的所有实例之间的常量大小,但是在编译时定义该大小是什么,而不必每次都更改源代码。数组的高度和宽度应该是单独的,也有默认值。
答案 0 :(得分:4)
#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
答案 1 :(得分:0)
另一种方法是仅为此值设置小array_size.h
个文件。在#include
中gameboard.h
@echo #define ARRAY_SIZE %ENV_DEF% >array_size.h
并在编译时重新生成它,例如批处理文件如:
cd ~/.cocoapods/repos/master
git pull