当前位置: 首页 > article >正文

C++注释

目录

1. 什么是注释

2. 语法

2.1 单行注释

2.2 多行注释

2.3 示例

3. 注释源代码的方法

3.1 使用多行注释

3.2 使用预处理器指令 #if #endif

3.3 使用条件判断语句 if (false)

4. 不能用宏定义,组成注释

5 // \ 会将源代码中的下一行也被当作注释中的一部分


1. 什么是注释

        注释是源代码内的文本内容,目的是方便人们根据注释阅读源代码。注释不会被编译到目标程序中,因为编译器将源代码生成目标程序时,每段注释都会被替换为单个空白字符从程序中移除。

2. 语法

2.1 单行注释

格式:

// 单行注释

说明:

  • 单行注释通常用于注释单行文本,编译器将源代码生成目标程序时,会将 // 和换行符之间的所有内容替换为单个空白的字符从程序中移除。
  • 可以把多个 // 放在一起组成多行注释。

2.2 多行注释

格式:
/*
多行
注释
*/

说明:

  • 多行注释通常用于注释大块文本,以 /* 和 */ 环绕的文本是注释的内容,编译器将源代码生成目标程序时,会将注释替换为单个空白字符从程序中移除。
  • /* */ 也可以用于单行注释,比如: /* 注释内容 */

2.3 示例

#include <iostream>

int main() {
	// 打印 hello world
    std::cout << "hello world" << std::endl;

    // 打印
    // hi
    std::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 0
    std::cout << "这句代码不会被执行,也不会被编译" << std::endl;
    #endif
        
    return 0;
}

3.3 使用条件判断语句 if (false)

#include <iostream>

int main() {
    // 使用条件判断语句排除不被执行的源代码
    if (false)
        std::cout << "这句代码不会被执行,但会被编译进目标程序中" << std::endl;

    return 0;
}

4. 不能用宏定义,组成注释

        因为编译器将C++源代码生成目标程序的执行顺序中,先将注释 // 到换行符之间的内容用单个空白字符替换掉了后再执行预处理指令,所以不能用宏定义,组成注释。

#include <iostream>

#ifndef DEBUG
    #define Print //
#else
    #define Print std::cout
#endif

int 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 文件截图如下

程序执行结果如下


http://www.kler.cn/a/407554.html

相关文章:

  • 跟《经济学人》学英文:2024年11月23日这期 Why British MPs should vote for assisted dying
  • 机器学习实战记录(1)
  • MetaGPT实现多动作Agent
  • LeetCode 101题集(随时更新)
  • 怎么只提取视频中的声音?从视频中提取纯音频技巧
  • Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性
  • VScode 连不上远程云服务器
  • 通过端口测试验证网络安全策略
  • 开源项目Screenshot-to-Code:截图图片生成代码
  • 大数据-229 离线数仓 - ODS层的构建 Hive处理 JSON 数据处理 结构化
  • Vue3 + Vite 项目引入 postcss + tailwindcss
  • C0029.在Clion中解决Debug时,提示Process finished with exit code -1的错误
  • Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制
  • 【网络安全设备系列】4、漏洞扫描设备
  • 【Git】:Git基本操作
  • QT 关于QTableView的应用和管理
  • 【计算机网络】解决bind error
  • 如何最简单、通俗地理解Python的迭代器?
  • Vue 3 中 onUnload 和 onPageScroll 使用详解
  • 一文学习开源框架OkHttp
  • Vue3 + Vite + Electron + TS 项目构建
  • FPGA经验谈系列文章——6、常用代码的逻辑级数预估(条件语句)
  • 万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统
  • IDEA2023 SpringBoot整合MyBatis(三)
  • LeetCode 力扣 热题 100道(八)相交链表(C++)
  • DB2 import/export data