#定义指针a->;b指向另一个指针c

#定义指针a->;b指向另一个指针c,c,C,我能做点像这样的事吗 #define a->b c 我试过了,编译器抱怨“ISO C要求宏名称后面有空格” 我想用它实现的是代码的重用。我想做一些类似的事情: #ifdef DEBUG #define a->b c #endif 还有其他方法吗?定义的语法是 #define <MACRONAME> <MACROVALUE> 演示了在宏周围使用括号以避免逻辑错误的必要性 注意:但是不赞成以这种方式使用宏。当基本细节像这样被隐藏时,很难理解代码。此外,这种

我能做点像这样的事吗

#define a->b c
我试过了,编译器抱怨“ISO C要求宏名称后面有空格”

我想用它实现的是代码的重用。我想做一些类似的事情:

#ifdef DEBUG
#define a->b c
#endif
还有其他方法吗?

定义的语法是

#define <MACRONAME> <MACROVALUE>
演示了在宏周围使用括号以避免逻辑错误的必要性



注意:但是不赞成以这种方式使用宏。当基本细节像这样被隐藏时,很难理解代码。此外,这种编码实践在性能和代码大小方面都没有任何好处。

否,宏名称不能包含非名称字符。像编写函数一样编写它(带参数)。我不明白你想做什么,为什么。你能提供一个更详细的例子来说明你想做的“代码重用”吗?撇开这不是一种干净的方法不谈,它不应该是
#define c a->b
?…尽量避免像瘟疫一样的宏。把它们用于简单的事情。当试图调试代码时,将它们用于更复杂的事情只会导致流泪没有好处?!FWIW,即使是IOCCC也不赞成使用
#define
s来混淆代码。他们使用的确切路线是大量的#定义来掩盖来源已经变得“陈旧”。查看。在现实世界中,人们必须维护/调试其他人的代码,为什么要让他们的工作比现在更棘手?@EdHeal好吧,既然你提出了这个问题,我想
#define
是顾问的梦想,也是维护者的噩梦实际上,我发现
#ifdef
的肮脏巢穴更像是一场噩梦。(并且
配置
积极鼓励它…)
#define c (a->b)