CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • #include 的工作原理:搜索路径顺序,<> 与 "" 的区别

    C++ SELF
    等级 28,课时 0
    我们来解析预处理指令 #include 实际上做了什么, < ... > 与 "..." 两种形式有何不同,头文件的搜索顺序如何组织(本地目录、项目的 include 目录、系统路径),为何通过 include/ 保持稳定的 include 路径很重要,以及如何调试类似 file not found 的错误和同名头文件冲突。
    可用
  • 宏 #define:风险与命名约定

    C++ SELF
    等级 28,课时 1
    我们来拆解 C++ 预处理器的本质,以及为什么宏( #define)是危险的:它们在编译前以文本替换的方式工作,忽略类型和作用域。通过示例展示运算符优先级、重复求值和副作用、多行宏,以及惯用法 do { ... } while( false)。另外还会总结实用的命名规则(项目前缀 TT_、 ALL_CAPS),以及一个“合适”的日志宏案例,配合 __FILE__/ __LINE__。
    可用
  • 条件编译 — 针对平台和特性的 #if/#ifdef

    C++ SELF
    等级 28,课时 2
    解析 C++ 条件编译:预处理指令 #if/ #ifdef 与普通 if 有何不同,哪些指令用于平台与特性 ( #ifdef, #ifndef, #elif, #endif, 操作符 defined),如何通过 config.hpp 组织配置,以及为什么“未选中”的分支可能多年保持损坏。最后 — 一个实用迷你记录器和典型错误。
    可用
  • constexpr / inline / template 代替宏

    C++ SELF
    等级 28,课时 3
    我们分析为什么宏作为“文本魔法”是危险的,以及在现代 C++ 中用什么替代它们:通过 inline constexpr 做配置,使用 constexpr 函数做计算,通过 template 实现通用工具,以及预处理器唯一“合理”的用例 —— 捕获调用位置,通过 __FILE__/ __LINE__。最后 — 一张速查表和在 mermaid 中的选择方案图。
    可用
  • 宏调试

    C++ SELF
    等级 28,课时 4
    我们分析为什么由宏引起的错误经常“不在调用处报错”,而是在意想不到的行:编译器看到的是预处理阶段之后展开的文本( #include, #define, #if)。学习如何查看“预处理后的文件”,捕捉运算符优先级的陷阱( SQUARE 和 */ +)、参数被重复计算( ++),以及如何通过 do { ... } while( false) 来写出安全的宏。最后——重构:仅为保留 __FILE__/ __LINE__ 保留宏,把逻辑移动到普通的 C++ 函数中。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym