96.说一下你理解的 ifdef endif代表着什么?

96.说一下你理解的 ifdef endif代表着什么?

1. 它是什么

  • 属于预处理阶段(编译之前就执行)
  • 不是运行时语句,不生成机器码
  • 作用:根据宏是否定义,决定某段代码要不要参与编译

2. 基本含义

#ifdef 宏名
    // 代码段A
#endif

含义:

如果这个 “宏名” 被定义过(#define 过),就编译代码段 A;否则完全忽略这段代码,就像没写一样。

配套常用的还有:

#ifdef X
// ...
#else
// ...
#endif
#ifndef X  // if not defined
// ...
#endif

3. 它到底代表什么?(核心理解)

它代表:

一段代码的 “编译开关”

  • 开:代码参与编译
  • 关:代码直接被删掉,不进编译

if/else 完全不是一个级别:

  • if运行时判断,代码一定编译进去
  • #ifdef编译时裁剪代码,不满足就直接不编译

4. 典型用途(面试常问)

  1. 防止头文件重复包含

    #ifndef _HEADER_H_
    #define _HEADER_H_
    // 声明内容
    #endif
    
  2. 跨平台代码

    #ifdef _WIN32
    // Windows 代码
    #else
    // Linux 代码
    #endif
    
  3. 调试版本 / 发布版本切换

    #ifdef DEBUG
    printf("debug info\n");
    #endif
    
  4. 功能裁剪、模块化开关

5. 一句话总结(背这个)

#ifdef ... #endif预处理条件编译指令

作用是根据宏是否定义,决定这段代码是否参与编译

用于跨平台、防重复包含、调试开关、功能裁剪。

posted @ 2023-07-11 15:34  CodeMagicianT  阅读(116)  评论(0)    收藏  举报