c++ - 你遇到过的最糟糕的现实世界宏/预处理器滥用是什么?

标签 c++ c macros preprocessor

您遇到过的最糟糕的现实世界宏/预处理器滥用是什么(请不要做作的 IOCCC 答案*哈哈*)?

如果真的很有趣,请添加一个简短的片段或故事。目标是教一些东西,而不是总是告诉人们“永远不要使用宏”。


p.s.:我以前使用过宏......但通常当我有一个“真正的”解决方案时,我最终会摆脱它们(即使真正的解决方案是内联的,所以它变得类似于宏)。


奖励:举一个例子,说明宏确实比非宏解决方案更好。

相关问题: When are C++ macros beneficial?

最佳答案

根据内存,它看起来像这样:

#define RETURN(result) return (result);}

int myfunction1(args) {
    int x = 0;
    // do something
    RETURN(x)

int myfunction2(args) {
    int y = 0;
    // do something
    RETURN(y)

int myfunction3(args) {
    int z = 0;
    // do something
    RETURN(z)

是的,没错,任何函数中都没有右括号。语法高亮一团糟,所以他用vi编辑(不是vim,它有语法着色!)

他是一名俄罗斯程序员,主要从事汇编语言工作。他热衷于保存尽可能多的字节,因为他以前曾在内存非常有限的系统上工作。 “它是用于卫星的。只有很少的字节,所以我们将每个字节用于很多事情。” (有点摆弄,重用机器指令字节作为它们的数值)当我试图找出什么样的卫星时,我只能得到“轨道卫星。为了进入轨道。”

他还有两个怪癖:一个安装在显示器上方的凸面镜“用于知道谁在看”,以及偶尔突然从椅子上下来做十个快速俯卧撑。他将最后一个解释为“编译器在代码中发现错误。这是惩罚”。

关于c++ - 你遇到过的最糟糕的现实世界宏/预处理器滥用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/652788/

相关文章:

c++ - 是否有 BOOST_FOREACH 的免 boost 版本?

c++ - 使用 OOP 和 STL 在 C++ 中解析缓冲区

C++ fwrite,错误代码 36 Broken Pipe

c - mutex_init() 导致奇怪的段错误

c - 对 PTHREADS 过于偏执?

scripting - Tera Term Scripting,需要帮助开发宏

c++ - 我如何运行以下代码

c++ - 将双向链表重写为 STL 容器

c++ - 是否有可能知道哪个库使用 ldd 引入了另一个库?

c - token 粘贴前如何在宏参数中操作?