现在我又搞糊涂了。 在我们的旧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");
printf("0x%02x ", *b);
}
}
#endif
答案 0 :(得分:1)
它不是一种旧的方式,它是一种独立的方式。这使用预处理器来删除包含的行,因此编译器永远不会看到它们。
这是一种极端形式的&#34;功能切换&#34 ;;通常你会看到像
这样的代码#if defined SOME_HANDY_FEATURE
void use_some_handy_feature(int handyness)
{
...
}
#endif
但是这里#define
被文字0
取代,当然这是假的,所以删除了代码块。
它很方便,因为即使删除的代码包含注释也能正常运行,但正常的/* ... */
注释不会包含注释,因为它们不会嵌套。