C / C ++预处理程序是否可以检测某些编译器选项?

问题描述 投票:0回答:1

我有一个功能

static int include[MAX_NODE_NUMBER][MAX_NODE_NUMBER][MAX_NODE_NUMBER*MAX_NODE_NUMBER];
static bool calculated[MAX_NODE_NUMBER][MAX_NODE_NUMBER][MAX_NODE_NUMBER*MAX_NODE_NUMBER]={};

其中MAX_NODE_NUMBER为200。仅当-mcmodel=large在gcc / g ++选项中时才能编译。这两个静态变量仅用于缓存某些数据,因此它们不是必需的。是否可以像

这样编码
#if <some condition>
static int include[MAX_NODE_NUMBER][MAX_NODE_NUMBER][MAX_NODE_NUMBER*MAX_NODE_NUMBER];
static bool calculated[MAX_NODE_NUMBER][MAX_NODE_NUMBER][MAX_NODE_NUMBER*MAX_NODE_NUMBER]={};
#endif

所以可以同时为大内存和小内存编译程序。

c++ c gcc g++ c-preprocessor
1个回答
0
投票

您具有命令行选项-D,可以在其中定义符号

例如

-DMODEL_LARGE

然后在您的源文件中:

#ifdef MODEL_LARGE
static int include[MAX_NODE_NUMBER][MAX_NODE_NUMBER][MAX_NODE_NUMBER*MAX_NODE_NUMBER];
static bool calculated[MAX_NODE_NUMBER][MAX_NODE_NUMBER][MAX_NODE_NUMBER*MAX_NODE_NUMBER]={};
#endif

© www.soinside.com 2019 - 2024. All rights reserved.