为什么 SGI stl 源代码使用 #if 0
Why do SGI stl source code use #if 0?
在 SGI 源代码文件的iterator.h
文件中,第 67 行:
#if 0
using __STD::iterator;
#endif
为什么标准模板库编码器以这种方式编写?声明另一个宏并将其用作测试条件不是更好吗:
#define STD_ITERATOR
#ifndef STD_ITERATOR
using __STD::iterator;
#endif
为什么要用粗鲁的#if 0
硬编码?
#if 0
通常用于您想要删除某些内容,但您不太确定是否真的要删除它,因此将其保留在#if 0
内,以便您可以再次将其收回。
添加额外的#define XX
并使用#ifndef
会导致"namepolution",当您出于某种原因需要在自己的代码中使用STD_ITERATOR
作为宏或名称时,这有点烦人,只是发现它在你碰巧使用的标头中被定义为任何内容,根本没有充分的理由。
(在"发布"代码中保留#if 0
并不被认为是非常好的风格 - 它应该是一个临时措施,一旦你"确定"不需要它,就应该删除)。
#if 0 的另一个很好的用途是用于故障排除 - 例如,你知道你的代码在函数 X 中崩溃,但不是在何处崩溃,并且函数 X 非常大。因此,在函数的一半周围放一个 #if 0,如果它没有崩溃,你就知道它在if'd out位。[显然要小心一些,这样代码就不会仅仅因为您现在已经删除了一些关键部分而中断!
相关文章:
- 在Linux中哪里可以找到互斥、未来等的源代码
- 我的简单if-else语句是如何无法访问的代码
- 如何将enable-if与模板参数和参数包一起使用
- 无论条件是否为true,if总是在c++中执行
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- 难以理解某些人解决IOI问题的源代码
- if数组上的随机数
- 将按位if条件转换为普通if条件
- If语句在c++中被忽略
- 为什么 SGI stl 源代码使用 #if 0