目录
1. 什么是注释
2. 语法
2.1 单行注释
2.2 多行注释
2.3 示例
3. 注释源代码的方法
3.1 使用多行注释
3.2 使用预处理器指令 #if #endif
3.3 使用条件判断语句 if (false)
4. 不能用宏定义,组成注释
5 // \ 会将源代码中的下一行也被当作注释中的一部分
1. 什么是注释
注释是源代码内的文本内容,目的是方便人们根据注释阅读源代码。注释不会被编译到目标程序中,因为编译器将源代码生成目标程序时的翻译阶段3中,每段注释都会被替换为单个空白字符从程序中移除。
2. 语法
2.1 单行注释
格式:
// 单行注释
说明:
- 单行注释通常用于注释单行文本,编译器将源代码生成目标程序时,会将 // 和换行符之间的所有内容替换为单个空白的字符从程序中移除。
- 可以把多个 // 放在一起组成多行注释。
2.2 多行注释
格式:
/*
多行
注释
*/
说明:
- 多行注释通常用于注释大块文本,以 /* 和 */ 环绕的文本是注释的内容,编译器将源代码生成目标程序时,会将注释替换为单个空白字符从程序中移除。
- /* */ 也可以用于单行注释,比如: /* 注释内容 */
2.3 示例
#include <iostream>int main() {// 打印 hello worldstd::cout << "hello world" << std::endl;// 打印// histd::cout << "hi" << std::endl;/** 打印* HELLO WORLD*/std::cout << "HELLO WORLD" << std::endl;return 0;
}
g++ -E 001_注释.cpp -o 001_注释.i // -E 告诉编译器,对 001_注释.cpp 文件进行预处理,并生成预处理文件 001_注释.i
使用 g++ 对以上源程序进行预处理,001_注释.i 文件截图如下
3. 注释源代码的方法
3.1 使用多行注释
#include <iostream>int main() {// 使用多行注释,去除不需要的源代码/*std::cout << "hi" << std::endl;*/
// std::cout << "hello ";
// std::cout << "world" << std::endl;std::cout << "Hello World" << std::endl;return 0;
}
3.2 使用预处理器指令 #if #endif
#include <iostream>int main() {// 使用预处理器指令去除不需要的源代码#if 0std::cout << "这句代码不会被执行,也不会被编译" << std::endl;#endifreturn 0;
}
3.3 使用条件判断语句 if (false)
#include <iostream>int main() {// 使用条件判断语句排除不被执行的源代码if (false)std::cout << "这句代码不会被执行,但会被编译进目标程序中" << std::endl;return 0;
}
4. 不能用宏定义,组成注释
因为编译器将C++源代码生成目标程序的执行顺序中,先将注释 // 到换行符之间的内容用单个空白字符替换掉了后(翻译阶段3)再执行预处理指令(翻译阶段4),所以不能用宏定义,组成注释。
#include <iostream>#ifndef DEBUG#define Print //
#else#define Print std::cout
#endifint main() {Print << "Hello World" << std::endl; return 0;
}
g++ -E 002_注释.cpp -o 002_注释.i // -E 告诉编译器,对 002_注释.cpp 文件进行预处理,并生成预处理文件 002_注释.i
使用 g++ 对以上源程序进行预处理,002_注释.i 文件截图如下
如上截图可见,我们期望是注释掉 //<< "Hello World" << std::endl; 这个语句,实际上,编译器在处理注释时,已经将 #define Print // 替换成 #define Print ,所以编译器在处理预处理阶段时,将源代码处理成 << "Hello World" << std::endl; 那么对源代码进行编译时,编译器自然而然就会报以下错误:
5 // \ 会将源代码中的下一行也被当作注释中的一部分
#include <iostream>int main() {// 这行是注释\std::cout << "hello ";std::cout << "world" << std::endl;return 0;
}
g++ -E 003_注释.cpp -o 003_注释.i // -E 告诉编译器,对 003_注释.cpp 文件进行预处理,并生成预处理文件 003_注释.i
使用 g++ 对以上源程序进行预处理,003_注释.i 文件截图如下
程序执行结果如下