gpt4 book ai didi

C#define based in another #define 错误

转载 作者:行者123 更新时间:2023-12-02 08:21:51 28 4
gpt4 key购买 nike

所以我的 Visual Studio 将 tag1 和 tag2 都声明为未定义,但它们的定义很清楚,我不能根据另一个定义一个吗?

#define push                99
#define last_instruction push

#ifdef DEBUG
#define new_instr (1+last_instruction) //should be 100
#undef last_instruction
#define last_instruction new_instr //redifine to 100 if debug
#endif

我有一些 tag2 的情况,它说定义必须是 const,但它是常量,它是 1+99,任何帮助将不胜感激。

谢谢!巴

最佳答案

首先,你不能定义同一个宏两次。如果你需要替换一个宏,你首先必须#undef它:

#define tag1    99
#ifdef DEBUG
#define tag2 (1+tag1)
#undef tag1
#define tag1 tag2
#endif

但这并不能解决问题。宏不是变量,您不能使用它们来存储值以供日后重用。它们是文本替换,因此它们在某种程度上是并行存在的。

因此新定义 #define tag1 tag2 扩展为 1+tag1。但是在这一点上,没有什么叫做tag1,因为我们只是取消了它的定义并且我们还没有完成重新定义它。

考虑太多你会发疯的:)所以忘掉这整件事吧,你真正想做的是:

#define tag1_val  99
#define tag1 tag1_val

#ifdef DEBUG
#undef tag1
#define tag1 (tag1_val+1)
#endif

关于C#define based in another #define 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com