首先,我知道what exactly does an if 0 endif block do? .
但我正在寻找 FreeBSD 的 cat.c另一个问题中的解释没有解释此文件中的 #if 0
。注释掉的 block 太小了,以至于有人无法轻松删除它们,但他/她选择将它们包装在 #if 0 ... #endif
中。为什么有人会做出这样的选择而不是简单地删除这段代码?如果它以某种方式用作元数据,为什么不将其放在评论中?
最佳答案
在这种情况下,它会在源代码中保留最初派生源的代码版本的历史记录(因此,即使您无权访问版本控制系统,您也可以看到此信息)信息),同时不向编译器提供正确的信息。
#if 0
#ifndef lint
static char const copyright[] =
"@(#) Copyright (c) 1989, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#endif
曾几何时,这些信息会被编译到二进制文件中。现代编译器消除了像这样未使用的变量。
关于c - cat.c 中 #if 0 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315562/