如何在几行代码中添加注释,并在注释中添加说明

25

我有一个像这样的程序

int main(){ 

    char c;
    int i; /* counter */
    double d;

    return 0;
}

如果我想注释掉 char、int 和 double,只保留 return 未被注释,我能做到吗?已经存在的注释会阻止注释的效果。

有没有一种简单且快捷的方法来注释掉它们?


11
通常我会在代码行末尾使用//来添加单行注释。因此,可以这样写: // counter,如果要注释多行,也可以用/*...*/ 将块注释起来。 - Felix Kling
6个回答

81
int main(){ 
#if 0
    char c;
    int i; /* counter */
    double d;
#endif
    return 0;
}

虽然不是严格的注释,但这个方法可以实现你想要的效果,并且很容易撤销。

如果你有一个可以匹配#if..#endif开始和结束的编辑器,这种方法在处理更大的代码块时也很有效。


11
+1 ...和“预处理器注释”(不同于/*...*/)可以嵌套。 - pmg
7
#IF FALSE也是一种选项,更明确。 - Merlyn Morgan-Graham
8
除非在某些条件下(例如,在 gcc 下启用 -Wundef 选项时),否则 FALSE 不是标准预定义的宏之一,可能会导致某些编译器发出警告。 - Blrfl
2
聪明,但我希望人们只是用它来快速调试一些东西,然后撤销它。我不想像这样扫描代码。 - webbiedave
1
@Meryln:除非有人这样定义 #DEFINE FALSE TRUE - Jeffrey Greenham
显示剩余3条评论

13
int main(){ 

/*
    char c;
    int i; // counter
    double d;
*/
    return 0;
}

4
@Steve的回答相当聪明,但我发现以下这个翻译最常见,且不太可能让您的开发经理产生疑问 :) - Kenny Cason
我不想把/**/的注释改成//,因为我正在编写Linux内核相关的内容。 - pvinis
4
@if 0 是相当常见和广泛理解的,而且有在 C 和 C++ 中使用的附加好处。 - user229044
@meagar 很好知道,我会记下来的。我之前没见过这个用法 :) - Kenny Cason
1
@KennyCason,通常你不会在经过审核和发布的代码中看到它,因为留下孤立的代码块是一种不好的编程习惯。但这是编码时常用的技巧。 - RBerteig

5

在C99中

int main(){ 

//    char c;
//    int i; /* counter */
//    double d;

    return 0;
}

5

我偏爱:

int main(){ 

#ifdef USE_DISABLED_CODE
    char c;
    int i; /* counter */
    double d;
#endif

    return 0;
}

使用类似于'CODE_REMOVED_FOR_TESTING_PURPOSES'或者'REMOVED_FROM_E3_BUILD'这样简洁的名称,并且不要定义它,这样你就留下了一个简洁的注释,说明代码为什么被禁用(如果你在所有文件中搜索#ifdef,这个注释将会显示出来)。


1
我最近(在2010年)从大约30个文件中删除了#ifdef POST_JUNE_DEVELOPMENT块。现在没有人确定讨论的是哪一年(可能是1994年左右,但它可能比那更早;我们当时改变了CM系统,所以较早的历史记录已经丢失),更不用说计划中的“六月后开发”将会是什么了。您应该在至少一个地方记录定义的含义。 - Jonathan Leffler
我在权衡不同方法时使用这个。我尝试使用一个描述代码块“意图”的短语,而不是像“POST_JUNE_DEVELOPMENT”这样模糊的东西。我知道几年后我会再次看到这段代码,并想知道June是谁,她担任什么职务,或者为什么她的离开促进了某些事情的发展。;-) - RBerteig

5
如果您的编译器支持注释的//符号(在C语言中不是标准用法,但是很常见),请使用能够切换整个代码块的编辑器。

2
// 在标准 C99 编译器中,可以使用 // 进行注释 :-) - pmg
确实,这取决于使用哪种 C 语言的版本 ;-) - Bruno

3

有很多编辑器/IDE支持使用热键进行注释/取消注释。这是一个非常有用的功能。 在Kate/KDevelop中,热键是Ctrl+D。

这个功能也在问题中描述(以及其他支持此功能的IDE)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接