gpt4 book ai didi

c++ - C/C++ 条件宏组合

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

我可以在为 C 或 C++ 编写代码时组合宏吗?如果不是,为什么?如果是,如何?

我对如何解决以下(不正确且未编译!!!)想法很感兴趣:

#define FREE(x) if((x)) {                                         \
#ifdef MEM_DEBUG_ \
fprintf(stderr, "free:%p (%s:%d)\n", (x), __FILE__, __LINE__); \
#endif \
free((x)); }

所以,我想要实现的是:

我想定义宏 FREE,如果我定义了 MEM_DEBUG,它将包含一个额外的行。

我知道,为了解决这个问题,我可以根据 MEM_DEBUGFREE 定义两个定义,例如:

#ifdef MEM_DEBUG
#define FREE() something
#else
#define FREE() something else
#endif

但我只是好奇是否还有其他方法!

最佳答案

是的,您可以定义宏来封装设置标志时执行某些操作的想法。

#ifdef MEM_DEBUG
# define IF_MEM_DEBUG( ... ) __VA_ARGS__
# define IF_MEM_NDEBUG( ... )
#else
# define IF_MEM_DEBUG( ... )
# define IF_MEM_NDEBUG( ... ) __VA_ARGS__
#endif

#define FREE(x) \
if((x)) { \
IF_MEM_DEBUG( \
fprintf(stderr, "free:%p (%s:%d)\n", (x), __FILE__, __LINE__); \
) \
free((x)); \
}

关于c++ - C/C++ 条件宏组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20347006/

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