C++预处理命令

本文深入探讨了预处理命令的三大功能:宏定义、文件包含、条件编译,并详细解释了宏定义、文件包含的使用及注意事项。此外,文章还介绍了其他预处理指令如#line、#error、#pragma,并通过实例演示如何在编译过程中实现代码的选择性编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预处理命令

预处理命令是在程序编译之前(包括词法和语法分析、代码生成、优化等)对程序做的相应处理。经过预处理后的程序不在包括预处理命令,这可以改进程序的设计环境,提高编程效率。

    预处理指令是以#号开头的代码行#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

预处理功能有以下3种:

1. 宏定义

2. 文件包含

3. 条件编译

4. 其他

***********************************************************************************************************

#define            宏定义

#undef             取消宏


#include           文件包含


#ifdef                 如果宏被定义就编译

#ifndef                如果宏未定义就编译

#endif                 结束编译块控制

#if                         表达式非零就对代码进行编译

#else                    其他预处理的选项

#elif                        else if


#line                      改变当前的行数和文件名称

#error                     输出一个错误信息

#pragmatic            为编译程序提供非常规的控制流信息

***********************************************************************************************************

一、宏定义

#define 标识符 字符串

宏定义和const常变量以及内置函数inline


二、文件包含

#include <iostream>
#include <iostream.h>
#include "IO.h"


1. <iostream>h和<iostream.h>

  我们主张使用<iostream>,而不是<iostream.h> 
        首先,.h格式的头文件早在98年9月份就被标准委员会抛弃了,我们应该紧跟标准,以适合时代的发展。 
        其次,iostream.h只支持窄字符集,iostream则支持窄/宽字符集。 
        还有,标准对iostream作了很多的改动,接口和实现都有了变化。 
        最后,iostream组件全部放入namespace std中,防止了名字污染。

2. < >和“ ”的区别——搜索路径不同
    <>编译器从标准库路径开始搜索
    “ ”编译器从用户工作路径开始搜索

三、条件编译

在编译时只需要选择一部分进行编译时,可以使用条件编译语句进行预处理,使用方法和if...else...类似

#if defined WIN32 || defined _WIN32
	...code...
#end if

如果程序在windows平台下编译,代码中就包含code部分。
其他见列表。


四、其他

#line
#error
#pragma

#pragma:  
目前用到的几个:
#pragma once: 在文件开始写入,保证头文件只被编译一次
#pragma pack(n) ,编译器按照n个字节进行对齐        
#pragma pack (),取消自定义字节对齐方式。
其他:参考
http://www.cnblogs.com/cchyao/archive/2010/09/25/1834308.html
http://www.cnblogs.com/qinfengxiaoyue/archive/2012/06/05/2535524.html

参考:

http://www.cnblogs.com/lidabo/archive/2012/08/27/2658914.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值