gpt4 book ai didi

c++ - 为什么 SGI STL 源代码使用#if 0?

转载 作者:行者123 更新时间:2023-11-30 04:06:36 24 4
gpt4 key购买 nike

在SGI源代码文件的iterator.h文件中,第67行:

#if 0
using __STD::iterator;
#endif

标准模板库的coder为什么要这样写?声明另一个宏并将其用作测试条件不是更好吗:

#define STD_ITERATOR
#ifndef STD_ITERATOR
using __STD::iterator;
#endif

为什么要用粗鲁 #if 0 硬编码?

最佳答案

#if 0 通常在您想要删除某些内容时使用,但您不确定是否真的要删除它,所以您将其保留在 #if 0 中,这样你就可以把它拿回来了。

添加额外的 #define XX 并使用 #ifndef 会导致“namepolution”,当您需要使用 STD_ITERATOR 时会有点烦人出于某种原因在您自己的代码中作为宏或名称,只是发现它在您碰巧使用的 header 中没有定义,根本没有充分的理由。

(在“发布”代码中保留 #if 0 被认为不是很好的样式 - 它应该是一种临时措施,一旦您“确定”不需要它就应该将其删除).

#if 0 的另一个很好的用途是故障排除 - 例如您知道您的代码在函数 X 中崩溃,但不是在什么地方崩溃,而且函数 X 非常大。所以把#if 0 放在函数的一半附近,如果它没有崩溃,你就知道它在 if'd out 位中。 [显然要小心,这样代码才不会因为你现在删除了一些关键部分而中断!]

关于c++ - 为什么 SGI STL 源代码使用#if 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22830887/

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