我正在开发一个向后兼容项目,因此,我需要重新定义事物而不弄乱旧代码。我想将输出用作 #define
中的参数之一。
例如:我的旧代码包含
#define OPERATION(y) ...
我们使用了它
x = OPERATION(y);
在新代码中我们有:
#define OPERATION_NEW(y,x) ...
我们这样使用它:
x = OPERATION_NEW(y,x);
请注意,现在 x 是一个结果和一个参数。
我希望能够执行下一步:
#define OPERATION(y) OPERATION_NEW(y,__output__)
(我希望能够将输出作为参数获取并在定义中使用它...)
这可能吗?如果是这样,怎么办?如果没有,这种情况有解决办法吗?我有一些具有 OPERATION(y) 的旧代码,并希望将其重定向到 OPERATION_NEW(y,x) - 同时记住 x 必须是输出...
最佳答案
不是真的。宏不存在“输出”这样的东西。在这种特殊情况下,OPERATION(y)
是一个扩展为表达式的宏。该表达式随后被分配给x
。
但是预处理器只处理宏,而不处理赋值。它不知道也不关心前一个 token 。编译器只看到两边的赋值和表达式,而看不到宏。两者都没有完整的图片。
关于c++ - 我可以使用输出作为 #define 中的参数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407994/