这是我在开源项目的代码中找到的:
#if 0
static int print_cb(UNUSED void *ctx, void *i)
{
fprintf(stderr, "%i\n", *(int*)i);
return 0;
}
#endif
Run Code Online (Sandbox Code Playgroud)
你能解释一下,如果这总是错误的原因是什么?
谢谢.
unw*_*ind 10
它只是一种使用预处理器注释掉(阻止编译)大块代码的方法.这很常见.
它比使用实际的注释语法更好,因为它没有嵌套.如果你有:
int foo = 13; /* This won't be needed. */
Run Code Online (Sandbox Code Playgroud)
你不能通过这样做评论出来:
/*
int foo = 13; /* This won't be needed. */
*/
Run Code Online (Sandbox Code Playgroud)
由于注释语法没有嵌套,上面的代码不会编译.使用该#if 0方法绕过该限制.
这是一种评论代码的方式.永远不会满足条件(0永远不会为真),因此预处理器将从编译中排除代码.
它通常用于较大的代码块,这些代码块可能包含一些嵌入的多行注释/* */,这些注释无法通过将它们包含在另一个多行注释中来注释掉.