c++ - 我可以使用输出作为 #define 中的参数吗

标签 c++ c c-preprocessor

我正在开发一个向后兼容项目,因此,我需要重新定义事物而不弄乱旧代码。我想将输出用作 #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/

相关文章:

c++ - getenv - 如何设置环境变量

c++ - 负责从sqlite3_column_text中释放指针的sqlite c/c++ api

c - 数据比 malloc 声明的大会发生什么?

c++ - 我们可以有递归宏吗?

ios - 从 C 定义 IOS 日志

c++ - 在 if-else 语句内部和外部保留修改后的值?

c++ - std::ifstream::在 eclipse 上打开错误

c - 编写 ftp 客户端程序以列出服务器上的文件的最佳方法?

c - gdb 中链表值的变化

c - "Expected identifier or ' ( ' before int"尝试同时使用定义和函数时出错