首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接宏值

如何连接宏值
EN

Stack Overflow用户
提问于 2022-07-27 12:17:45
回答 1查看 31关注 0票数 0

首先,这涉及到为DB++构建AQL-数据库文档(来自ASA的概念)。这些凭证使用了"Kerninghan (1978)“中的c-preprocessor。所以我不能改变它。

我试图建立一个依赖的定义。

我用"202207“来定义月份。然后,我想自动定义"MONTH_MAX“和"MONTH_MIN”与"20220731“和”MONTH_MIN“与"20220700”。

或者更好的宏“MONTH_MAX(月份) month31”

我试过了

代码语言:javascript
复制
#define MONTH 202207
#define MONTH_MAX MONTH31
#define MONTH_MIN MONTH00

但是"MONTH_MIN“变成了"MONTH00”而不是"20220700“。

代码语言:javascript
复制
#define MONTH_MIN(month) month00
#define MONTH 202207

因此,如果我打电话给MONTH_MIN(月),我就得到了“MONTH_MIN”。

#define MONTH_MIN(month) month ## 00 let to 202207 ## 00

以下作品:

代码语言:javascript
复制
#define FILE(name) '/db/name'
FILE(customers)

因此,FILE(customers)'/db/customes'所取代。

最后看起来(db-语法并不重要)。

"query.dbq":

代码语言:javascript
复制
#define FILE(name) '/db/name'

#define MIN_MONTH(month) month00

#define KTNR  134256
#define MONTH 202107

(
  FILE(customers)
    ::
  cst_ktnr == KTNR
    %%
  cst_nr
  cst_ktnr
)
  **
(
  FILE(orders)
    ::
  cst_last_order <= MIN_MONTH(MONTH)  // here I need 20210700
    %%
  cst_nr = ord_customer
)

它变成

代码语言:javascript
复制
#line 1 ""
// 7 empty lines
(
  '/db/customers'
    ::
  cst_ktnr == 134256
    %%
  cst_nr
  cst_ktnr
)
  **
(
  '/db/orders'
    ::
  cst_last_order <= month00  // here I need 20210700
    %%
  cst_nr == ord_customer
)

我试过了

代码语言:javascript
复制
#define MIN_MONTH(month) month##00     -->    202107##00
#define MIN_MONTH(month) month ## 00   -->    202107 ## 00
#define MIN_MONTH(month) month00       -->    month00
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-01 14:26:55

如果您可以使用算术,那么:

代码语言:javascript
复制
#define MONTH_MAX (MONTH*100+31)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73137804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档