首先,这涉及到为DB++构建AQL-数据库文档(来自ASA的概念)。这些凭证使用了"Kerninghan (1978)“中的c-preprocessor。所以我不能改变它。
我试图建立一个依赖的定义。
我用"202207“来定义月份。然后,我想自动定义"MONTH_MAX“和"MONTH_MIN”与"20220731“和”MONTH_MIN“与"20220700”。
或者更好的宏“MONTH_MAX(月份) month31”
我试过了
#define MONTH 202207
#define MONTH_MAX MONTH31
#define MONTH_MIN MONTH00但是"MONTH_MIN“变成了"MONTH00”而不是"20220700“。
#define MONTH_MIN(month) month00
#define MONTH 202207因此,如果我打电话给MONTH_MIN(月),我就得到了“MONTH_MIN”。
#define MONTH_MIN(month) month ## 00 let to 202207 ## 00
以下作品:
#define FILE(name) '/db/name'
FILE(customers)因此,FILE(customers)被'/db/customes'所取代。
最后看起来(db-语法并不重要)。
"query.dbq":
#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
)它变成
#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
)我试过了
#define MIN_MONTH(month) month##00 --> 202107##00
#define MIN_MONTH(month) month ## 00 --> 202107 ## 00
#define MIN_MONTH(month) month00 --> month00发布于 2022-08-01 14:26:55
如果您可以使用算术,那么:
#define MONTH_MAX (MONTH*100+31)https://stackoverflow.com/questions/73137804
复制相似问题