C头文件中的外部定义常量

时间:2017-06-01 16:50:44

标签: c constants header-files compile-time-constant

我有一个在包含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

我想在运行时期间将数组保持为此结构的所有实例之间的常量大小,但是在编译时定义该大小是什么,而不必每次都更改源代码。数组的高度和宽度应该是单独的,也有默认值。

2 个答案:

答案 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个文件。在#includegameboard.h @echo #define ARRAY_SIZE %ENV_DEF% >array_size.h 并在编译时重新生成它,例如批处理文件如:

cd ~/.cocoapods/repos/master
git pull