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

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

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

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

    cpp 复制代码
    #define PI 3.14 float area = PI * radius * radius; // PI 被替换为 3.14
  • #include:包含头文件,用于引入库或其他文件。例如:

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

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

cpp 复制代码
#define VERSION 2 #if VERSION == 2 
// version 2 specific code #else 
// some other version code #endif
  • #undef:取消宏定义,例如:

    cpp 复制代码
    #undef PI

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

  • 替换时间

    • 宏定义 :在预处理阶段进行文本替换,不会经过编译,遵循代码替换原则。

      cpp 复制代码
      #define SQUARE(x) ((x) * (x)) int y = SQUARE(5); // 替换后成: int y = ((5) * (5));
    • 函数调用:经过编译后执行,代码行为更为规范且有类型检查。

  • 参数类型

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

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

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

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

相关推荐
憨猪在度假11 分钟前
Cmake学习笔记
c++·笔记·学习
weixin_5375904516 分钟前
《C程序设计》第六章练习答案
c语言·c++·算法
学游戏开发的30 分钟前
UE学习日志#19 C++笔记#5 基础复习5 引用1
c++·笔记·学习·游戏引擎·unreal engine
CodeClimb35 分钟前
【华为OD-E卷 - 最大矩阵和 100分(python、java、c++、js、c)】
java·c++·python·华为od·矩阵
charlie1145141912 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(OLED设备层封装)
c语言·stm32·单片机·教程·oled·嵌入式软件
张太行_2 小时前
C++中的析构器(Destructor)(也称为析构函数)
开发语言·c++
小林up3 小时前
【C语言设计模式学习笔记1】面向接口编程/简单工厂模式/多态
c语言·设计模式
涛ing6 小时前
32. C 语言 安全函数( _s 尾缀)
linux·c语言·c++·vscode·算法·安全·vim
独正己身7 小时前
代码随想录day4
数据结构·c++·算法
厂太_STAB_丝针8 小时前
【自学嵌入式(8)天气时钟:天气模块开发、主函数编写】
c语言·单片机·嵌入式硬件