gpt4 book ai didi

c++ - 一行调试宏

转载 作者:行者123 更新时间:2023-11-27 22:49:40 24 4
gpt4 key购买 nike

我想创建一个 C++ 宏函数来调试,我希望它像这样工作:

int main(){
int a = 3, b = 5, c = 7;
string s = "<";

print(a,s,b);
print(a,s,b,s,c);
}

OUTPUT:
3 < 5
3 < 5 < 7

我已经阅读了很多关于可变参数宏的内容,但我尝试编写的任何代码都无法正常工作。

我考虑过使用 lambda,但没有想出算法来实现它。

我只需要 1 行代码,因为它只是用于调试,除此之外我还可以创建更复杂的函数,但我想这一定是可能的...

最佳答案

如果您同意将分隔符替换为 ' << '(而不是',')那么宏就很容易定义了(但是请注意,print 不是宏的好名称,这就是我适当重命名它的原因):

#include <iostream>
#include <string>

#ifdef DEBUG
#define DEBUG_PRINT(x) std::cout << x << std::endl
#else
#define DEBUG_PRINT(x)
#endif

int main(){
int a = 3, b = 5, c = 7;
std::string s = "<";

std::cout << "START" << std::endl;

DEBUG_PRINT(a << s << b);
DEBUG_PRINT(a << s << b << s << c);

std::cout << "END" << std::endl;
return 0;
}

输出:

$ g++ -DDEBUG main.cpp && ./a.out
START
3<5
3<5<7
END

$ g++ main.cpp && ./a.out
START
END

关于c++ - 一行调试宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38688104/

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