C “的目的是什么?”#如果0…#endif“;宣言
现在我又糊涂了。 在我们的旧C代码中,我发现了一些奇怪的部分,一个似乎打印到终端的转储函数,我想知道您是否可以解释为什么使用这个“#if 0” 我猜这是一种注释代码的老方法C “的目的是什么?”#如果0…#endif“;宣言,c,if-statement,directive,C,If Statement,Directive,现在我又糊涂了。 在我们的旧C代码中,我发现了一些奇怪的部分,一个似乎打印到终端的转储函数,我想知道您是否可以解释为什么使用这个“#if 0” 我猜这是一种注释代码的老方法 #if 0 dump(b, cnt) char *b; int cnt; { int i; if (cnt == 0) return; for (i=0; i < cnt; i++, b++){ if ((i % 16) == 0) printf("\n"
#if 0
dump(b, cnt)
char *b;
int cnt;
{
int i;
if (cnt == 0)
return;
for (i=0; i < cnt; i++, b++){
if ((i % 16) == 0)
printf("\n");
printf("0x%02x ", *b);
}
}
#endif
#如果0
转储(b,cnt)
char*b;
int-cnt;
{
int i;
如果(cnt==0)
返回;
对于(i=0;i
这不是一种“老办法”,而是一种单独的办法。这将使用预处理器剪切包含的行,因此编译器永远不会看到它们
这是“功能切换”的一种极端形式;您经常看到这样的代码
#if defined SOME_HANDY_FEATURE
void use_some_handy_feature(int handyness)
{
...
}
#endif
但是在这里,#define
被literal0
替换,这当然是false,因此代码块被删除
它很方便,因为即使删除的代码包含注释,它也能工作,这是正常的
/**/代码>注释不是因为它们不嵌套。它允许您轻松地启用/禁用一段代码(例如,用于测试目的)。并且您需要考虑这不等同于评论。谢谢各位,我的直觉是正确的。对不起,我错过了以前有人问过的;(我的错。