gpt4 book ai didi

c++ - 如何使用宏本身的信息重新定义 C++ #define 宏?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:09 24 4
gpt4 key购买 nike

是否可以使用宏本身的信息重新定义 C++ #define 宏?我尝试了下面的代码,但由于宏的计算方式,输出不是我所期望的。

#include <iostream>

#define FINAL_DEFINE "ABC"
#define NEW_DEFINE FINAL_DEFINE "DEF" // Want ABCDEF

#undef FINAL_DEFINE
#define FINAL_DEFINE NEW_DEFINE // Want ABCDEF, but get empty?


int main ()
{
std::cout << FINAL_DEFINE << std::endl; // Want ABCDEF, but doesn't compile.
}

最佳答案

宏主体中的宏在定义宏时从不展开——仅在使用宏时展开。这意味着 NEW_DEFINE 的定义不是 "ABC""DEF",它正是#define 行中出现的内容:FINAL_DEFINE“DEF”

因此,当您使用 FINAL_DEFINE 时,它会扩展为 NEW_DEFINE,然后扩展为 FINAL_DEFINE "DEF"。此时它不会递归地扩展 FINAL_DEFINE(因为这会导致无限循环)所以不再发生扩展。

关于c++ - 如何使用宏本身的信息重新定义 C++ #define 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36734325/

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