我和几名学生讨论C编程风格时,当我们谈论注释时,其中一名学生指出他不在C代码中使用C++注释,因为它们是个坏主意。结果证明这是基于多行C++注释的个人经验,但这并不是我第一次听到这种说法。那么,//
被认为是有害的吗?如果是,为什么?
我和几名学生讨论C编程风格时,当我们谈论注释时,其中一名学生指出他不在C代码中使用C++注释,因为它们是个坏主意。结果证明这是基于多行C++注释的个人经验,但这并不是我第一次听到这种说法。那么,//
被认为是有害的吗?如果是,为什么?
这取决于你使用的C语言版本。C 99允许 // 作为注释,而 C 89 不允许。
如果你想尽可能向后兼容,请不要使用它们。但我认为这是一个极端的边缘情况。我打赌几乎所有人都使用C 99。
编辑:任何较新版本的GCC都使用了大部分的C99特性。你可以在维基百科中找到更多信息。
根据MISRA-C 2004标准,不允许使用C++注释。特定行业(尤其是汽车行业)看重符合MISRA标准的代码,因此不允许使用C++注释。我相信其他静态代码检查工具如LDRA等也是如此...
这并不意味着它们本质上是不好的,但这意味着如果你进入某些行业并想要专业工作,你将被积极劝阻使用C++风格的注释。
//
注释。 - Andrew如果在C语言中使用C++注释,有可能会导致某些C编译器无法接受您的代码。我认为这是不利的。
人们使用//
而不是 /* */
的一个普遍原因是前者可以“嵌套”,而后者不行,因此您可以注释掉具有注释的代码。但是在 C 中,您真正应该使用#if 0
来注释掉代码。
git-commit
记录历史记录,git-pull
/git-push
共享代码。 - Philip Potter//foo(); // call function foo
或者/* foo(); // call function foo */
这样的情况。另外,关于版本控制系统,git有一个很棒的stash功能,可以用来处理你想要保存的临时代码。“当你想记录当前工作目录和索引的状态,但是想回到一个干净的工作目录时,请使用git stash。该命令将您的本地修改保存并将工作目录恢复为与HEAD提交匹配的状态。” - RastaJedi#ifdef ENABLE_THE_NEXT_LINE ... #endif
作为更好的选择。 - Andrew现在这应该不是什么问题了,除非你正在维护为古老编译器编写的代码。
在C99中支持"//",但在C89(目前最受支持的方言)中不支持。
-ansi -pedantic -W -Wall
,这使得GCC在拒绝和警告不良代码方面非常严格。它也会拒绝使用//
注释。如果你想要接受C99的内容但保持严格性,可以使用-std=c99
而不是-ansi
,但我更喜欢我的C代码尽可能地兼容广泛。 - Philip Potter//
注释。 - Andrew