#ifndef与ifdef 2025-08-15

#ifndef#ifdef都是预处理指令,用于条件编译,但它们的逻辑相反:

1. #ifndef(if not defined)

(不声明时走里面的逻辑)

  • 检查某个宏是否没有被定义
  • 如果宏未定义,则编译后续代码
  • 常用于头文件保护(防止重复包含)(等于#pragma once)

示例:

#ifndef HEADER_H
#define HEADER_H
// 头文件内容
#endif

2. #ifdef(if defined)

(相反,声明后才会走里面的逻辑)

  • 检查某个宏是否已被定义
  • 如果宏已定义,则编译后续代码
  • 常用于平台特定代码或功能开关

示例:

#ifdef DEBUG
    printf("Debug信息\n");
#endif

常见用法:

  • #ifndef通常用于创建头文件保护宏
  • #ifdef常用于检查编译器特性、操作系统或调试模式
  • 两者都以#endif结束
  • 可以配合#else使用 还有#elif

其他:#if defined()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容