猿问

您遇到过的最糟糕的现实世界宏/预处理器滥用情况是什么?

您遇到过的最糟糕的 现实世界宏/预处理器滥用情况(请不要有故意的IOCCC回答*哈哈*)?


如果确实很有趣,请添加简短的摘录或故事。目的是教一些东西,而不是总是告诉人们“从不使用宏”。


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


慕姐4208626
浏览 459回答 3
3回答

慕虎7371278

从内存看,它看起来像这样:#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,它具有语法着色!)他是一位俄罗斯程序员,主要从事汇编语言工作。他热衷于保存尽可能多的字节,因为他以前曾在内存非常有限的系统上工作。“这是用于卫星的。只有很少的字节,因此我们将每个字节用在很多事情上。” (摆弄,重复使用机器指令字节的数值)当我试图找出哪种卫星时,我只能得到“在轨卫星。为了进入轨道”。他还有另外两个怪癖:一面安装在监视器上方的凸面镜“为了知道谁在看”,偶尔从椅子上突然退出以进行十次俯卧撑。他将最后一个解释为“编译器发现代码错误。这是惩罚”。

汪汪一只猫

我最糟糕的是:#define InterlockedIncrement(x) (x)++#define InterlockedDecrement(x) (x)--我花了两天的时间来解决一些多线程COM引用计数问题,因为有些白痴将其放在头文件中。我不会提到我当时工作的公司。这个故事的寓意?如果您不了解某些内容,请阅读文档并了解有关内容。不要只是让它消失。

动漫人物

#include <iostream>#define System S s;s#define public#define static#define void int#define main(x) main()struct F{void println(char* s){std::cout << s << std::endl;}};struct S{F out;};public static void main(String[] args) {&nbsp; System.out.println("Hello World!");}挑战:谁能用更少的定义和结构来做到这一点?;-)
随时随地看视频慕课网APP
我要回答