新闻中心

c++中的预处理器指令有哪些_c++ #include, #define, #ifdef用法总结【基础】

2025-12-12
浏览次数:
返回列表
include、#define、#ifdef 是 C++ 预处理器最基础的三条指令:#include 用于文本插入头文件, 查系统路径,"" 先查当前目录;#define 执行无类型文本替换,定义常量或带参宏(需括号防优先级错误);#ifdef/#ifndef 实现条件编译,常用于跨平台适配与头文件保护。

c++中的预处理器指令有哪些_c++ #include, #define, #ifdef用法总结【基础】

#include、#define、#ifdef 是 C++ 预处理器最常用也最基础的三条指令,它们在编译前由预处理器处理,不参与实际编译,但深刻影响代码结构和行为。

#include:引入头文件

作用是把指定头文件的内容“原样复制”到当前文件中该指令所在位置,用于复用声明(如函数原型、类定义、宏等)。

  • 尖括号 表示从系统路径(如 /usr/include 或编译器内置路径)查找,常用于标准库头文件:
    #include <iostream></iostream>
  • 双引号 "" 表示先在当前源文件所在目录查找,找不到再查系统路径,适合自定义头文件:
    #include "myheader.h"
  • 注意:不是“包含整个编译单元”,只是文本插入;重复包含可能引发重定义错误(可用头文件保护避免)

#define:定义宏

用于创建宏常量或宏函数,本质是文本替换,无类型检查,慎用复杂表达式。

Codeium Codeium

一个免费的AI代码自动完成和搜索工具

Codeium 345 查看详情 Codeium
  • 定义常量:#define PI 3.14159 → 后续所有 PI 被替换成 3.14159
  • 定义带参宏(注意加括号防运算优先级出错):
    #define SQUARE(x) ((x) * (x))SQUARE(a + b) 展开为 ((a + b) * (a + b))
  • 不推荐用 #define 替代 constconstexpr 常量,后者有类型安全和调试支持

#ifdef / #ifndef / #endif:条件编译

根据宏是否已定义,决定某段代码是否参与编译,常用于跨平台适配、调试开关、头文件保护。

  • #ifdef MACRO:如果 MACRO 已被 #define 定义,则编译其后到 #endif 的代码
  • #ifndef MACRO:如果 MACRO 未定义,才编译中间代码(更常用,比如头文件保护)
  • 典型头文件保护写法:
    #ifndef MYHEADER_H<br>#define MYHEADER_H<br>// 头文件内容<br>#endif
  • 配合 #else#elif 可实现多分支编译逻辑,例如区分 Windows/Linux:
    #ifdef _WIN32<br>  // Windows 特有代码<br>#else<br>  // Linux/macOS 代码<br>#endif

基本上就这些。掌握这三条指令,就能看懂绝大多数 C++ 头文件和项目配置逻辑。不复杂但容易忽略细节,比如宏替换顺序、括号缺失、重复包含问题——多写几遍、编译看看报错,很快就能踩准节奏。

以上就是c++++中的预处理器指令有哪些_c++ #include, #define, #ifdef用法总结【基础】的详细内容,更多请关注其它相关文章!


# 预处理器指令  # c++  # 标准  # cos  # stream  # win  # macos  # ios  # mac  # 处理器  # windows  # linux  # 网站的推广链接  # 南昌推荐网站推广  # 滨州网络优化seo  # 厦门市网站优化收费标准  # 服装外贸关键词排名前十  # 购物网站还需要哪些优化  # 徐州seo招聘  # 推广账号的营销视频素材  # 网站优化软件图标  # 游戏seo  # 已被  # 找不到  # 如何实现  # 什么用  # 如何用  # 三条  # 高性能  # 就能  # 有哪些  # 头文件 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 谷歌邮箱网页版官方页面入口 谷歌邮箱网页端快速访问  J*a递归快速排序中静态变量的状态管理与陷阱  利用Bokeh CustomJS动态控制DataTable列可见性  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  如何在CSS中使用浮动制作导航栏_float实现水平菜单  浏览器打开即用 美图秀秀网页版入口  葱吃多了会怎样 葱吃多了会伤胃吗  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程  飞书妙记怎样用语音转文字速记_飞书妙记用语音转文字速记【速记方法】  PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践  随机参数递归函数的基准调用次数与时间复杂度探究  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  React项目中导航栏Logo自适应布局:避免裁剪与布局溢出  vivo云服务网页版登录 怎么登录vivo云服务网页版  J*a中实现Go语言select通道多路复用机制  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  韩剧圈正版入口页面_韩剧圈官网登录链接  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现  Promise错误处理:在catch后终止链式then执行的策略  使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战  J*a实现学校排课程序_面向对象结构化项目示例  夸克AO3官网入口_AO3镜像网站2025推荐  ACG动漫视频网入口 ACG动漫*免费正版观看地址  Golang指针如何与map组合使用_Golang map指针组合实践  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  React Router v6 教程:构建认证保护的私有路由与重定向策略  小米Civi 4录制视频过暗_小米Civi 4亮度优化  拼多多赚钱渠道_拼多多收益来源  QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问  谷歌google账号注册详细步骤 谷歌账号注册官方教程  J*aScript DOM操作:高效清空列表元素的策略与实践  MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景  c++如何使用chrono库处理时间_c++标准库时间与日期操作  怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】  必由学网页版入口 必由学官方平台直接访问  我的世界官方游戏入口 我的世界官网平台直达链接  天眼查企业查询官网入口 天眼查官方网页版查询  电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】  汽水音乐在线解析 汽水音乐在线解析入口  Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项  163邮箱官方主页登录 直达网易邮箱登录核心页面  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  Win11网速慢怎么解决 Win11网络设置优化解除限速  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性 

搜索