【问题标题】:#define far, #define near Windef.h [duplicate]#define far,#define near Windef.h [重复]
【发布时间】:2025-11-26 13:05:01
【问题描述】:

可能重复:
Is there a clean way to prevent windows.h from creating a near & far macro?

Windef.h 中这两个定义的意义何在?

#define far     /* nothing */
#define near    /* nothing */

我知道这与 near and far 指针以及它们不再使用的事实有关,但是,#undef 它们是否安全,所以我可以使用 nearfar 作为函数和变量我的代码中的名称?

或者,我应该避免使用它,并且永远不要使用 nearfar 作为标识符吗?

【问题讨论】:

    标签: c++ windows


    【解决方案1】:

    不要重复使用它们。您需要做的最后一件事是必须反复向人们解释他们不是老式的装饰品。

    如果它对您的应用很重要,您可以考虑使用大写版本(因为标识符区分大小写) - 当您搞砸时,编译器会捕捉到拼写错误。

    请接受这与过去计算机仍然由金属制成的美好时光相比是不公平的。

    【讨论】:

    • 一台 80286 机器重达 45 磅!
    【解决方案2】:

    虽然取消定义这个空宏实际上是无害的,但我肯定会避免重用一些众所周知的宏......就像使用goto作为变量名只是因为你没有使用它作为关键字......

    【讨论】: