Effective C++条款4:尽量使用c++风格的注释
2009-05-08 22:43
218 查看
条款4:尽量使用c++风格的注释
旧的c注释语法在c++里还可以用,c++新发明的行尾注释语法也有其过人之处。例如下面这种情形:
if ( a > b ) {
// int temp = a; // swap a and b
// a = b;
// b = temp;
}
假设你出于某种原因要注释掉这个代码块。从软件工程的角度看,写这段代码的程序员也做得很好,他最初的代码里也写了一个注释,以解释代码在做什么。用c++形式的句法来注释掉这个程序块时,嵌在里面的最初的注释不受影响,但如果选择c风格的注释就会发生严重的错误:
if ( a > b ) {
/* int temp = a; /* swap a and b */
a = b;
b = temp;
*/
}
请注意嵌在代码块里的注释是怎么无意间使本来想注释掉整个代码块的注释提前结束的。
c风格的注释当然还有它存在的价值。例如,它们在c和c++编译器都要处理的头文件中是无法替代的。尽管如此,只要有可能,你最好尽量用c++风格的注释。
值得指出的是,有些老的专门为c写的预处理程序不知道处理c++风格的注释,所以象下面这种情形时,事情就不会象预想的那样:
#define light_speedp 3e8 // m/sec (in a vacuum)
对于不熟悉c++的预处理程序来说,行尾的注释竟然成为了宏的一部分!当然,正象条款1所说的那样,你无论如何也不会用预处理来定义常量的。
旧的c注释语法在c++里还可以用,c++新发明的行尾注释语法也有其过人之处。例如下面这种情形:
if ( a > b ) {
// int temp = a; // swap a and b
// a = b;
// b = temp;
}
假设你出于某种原因要注释掉这个代码块。从软件工程的角度看,写这段代码的程序员也做得很好,他最初的代码里也写了一个注释,以解释代码在做什么。用c++形式的句法来注释掉这个程序块时,嵌在里面的最初的注释不受影响,但如果选择c风格的注释就会发生严重的错误:
if ( a > b ) {
/* int temp = a; /* swap a and b */
a = b;
b = temp;
*/
}
请注意嵌在代码块里的注释是怎么无意间使本来想注释掉整个代码块的注释提前结束的。
c风格的注释当然还有它存在的价值。例如,它们在c和c++编译器都要处理的头文件中是无法替代的。尽管如此,只要有可能,你最好尽量用c++风格的注释。
值得指出的是,有些老的专门为c写的预处理程序不知道处理c++风格的注释,所以象下面这种情形时,事情就不会象预想的那样:
#define light_speedp 3e8 // m/sec (in a vacuum)
对于不熟悉c++的预处理程序来说,行尾的注释竟然成为了宏的一部分!当然,正象条款1所说的那样,你无论如何也不会用预处理来定义常量的。
相关文章推荐
- 条款4:尽量使用c++风格的注释
- 条款4:尽量使用c++风格的注释
- Effective C++:条款4:尽量使用c++风格的注释
- 条款4:尽量使用c++风格的注释
- 条款3,4:尽量用new和delete而不用malloc和free 尽量使用c++风格的注释
- More Effective C++ ——02_尽量使用C++风格的类型转换
- More Effective C++议题【二】:尽量使用C++风格的类型转换
- [More Effective C++]尽量使用C++风格的类型转换
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态
- 《More Effective C++》 Item M2:尽量使用C++风格的类型转换
- 读书笔记_Effective_C++_条款四十:明智而审慎地使用多重继承
- Effective C++ 条款6 若不想使用编译器自动生成的函数,就该明确拒绝
- more effective c++使用条款(一)—— 基础议题/运算符
- 2.尽量使用C++风格的类型转换
- 《Effective Modern C++》读书笔记(5) -- 尽量使用nullptr而不使用0和NULL
- More Effective C++(条款23:考虑使用其他程序库)
- Effective Modern C++ 条款20 把std::weak_ptr当作类似std::shared_ptr的、可空悬的指针使用
- effective c++ 条款2 尽量以const enum inline代替#define
- Effective Modern C++ 条款15 尽可能使用constexpr
- Effective Modern C++ 条款25 对右值引用使用std::move,对通用引用使用std::forward