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

C/C++基础知识复习(18)

1) C/C++ 中的预处理器指令有哪些?举例说明其用途。

C/C++ 的预处理器指令主要包括:

  • #define:定义宏,替换文本。例如:

    #define PI 3.14 float area = PI * radius * radius; // PI 被替换为 3.14

  • #include:包含头文件,用于引入库或其他文件。例如:

    #include <iostream> // 引入标准输入输出库
  • #ifdef#endif:条件编译,根据宏是否被定义来控制代码段的编译。例如:

    #define DEBUG #ifdef DEBUG std::cout << "Debugging enabled" << std::endl; #endif
  • #if, #else:根据条件编译不同的代码块。例如:

  • #define VERSION 2 #if VERSION == 2 
    // version 2 specific code #else 
    // some other version code #endif

  • #undef:取消宏定义,例如:

    #undef PI

2) 宏定义和函数调用的区别

  • 替换时间

    • 宏定义:在预处理阶段进行文本替换,不会经过编译,遵循代码替换原则。
      #define SQUARE(x) ((x) * (x)) int y = SQUARE(5); // 替换后成: int y = ((5) * (5));

    • 函数调用:经过编译后执行,代码行为更为规范且有类型检查。
  • 参数类型

    • 宏定义:不支持类型安全,没有参数类型检查,容易出错。
    • 函数调用:进行类型检查,提高了安全性。
  • 调试

    • 宏定义:难以调试,因为没有类型信息,可能导致误解和意外结果。
    • 函数调用:调试工具能提供更多信息,有助于理解和定位问题。
  • 返回值

    • 宏定义:没有返回值的概念,仅进行文本替换。
    • 函数调用:可以返回值,具备一致的返回机制。

总的来说,宏定义适合简单的文本替换,而函数更适合需要逻辑处理和类型检验的场景。建议优先使用函数而


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

相关文章:

  • 性能优化、安全
  • 车载空气净化器语音芯片方案
  • 数据结构-集合
  • Linux 进程线程间通信总结
  • 微信小程序=》基础=》常见问题=》性能总结
  • Chrome使用IE内核
  • 【C语言】结构体大小计算
  • 机器学习、深度学习面试知识点汇总
  • 三星手机投屏到MacBook的方法,多台手机同屏展示
  • 【MyBatis源码】SQL 语句构建器AbstractSQL
  • 第二届无人驾驶与智能传感技术国际学术会议
  • 青藤深度参编的终端安全国家标准正式发布
  • 怎么保护源代码,源代码防泄密的十种方法
  • Spring Boot编程训练系统:从概念到实现
  • 用 Python 从零开始创建神经网络(一):编码我们的第一个神经元
  • python + requests实现的接口自动化测试
  • 我的 Rust 之旅,以及如何学习 Rust
  • 十八:Spring Boot 依赖(3)-- spring-boot-starter-data-jpa 依赖详解
  • react-markdown标题样式不生效问题
  • 视频会议接入GB28181视频指挥调度,语音对讲方案
  • HTML(超文本标记语言)
  • 中介者设计模式 软考
  • Python毕业设计选题:基于django+vue的论坛BBS系统
  • RBF 网络的学习算法:原理、实现与应用
  • WebPages 安全
  • 用单片机MSP430设计一个太阳能实战项目,能够详细的设计出它的硬件和软件系统