C++编程->预编译指令小结

本文详细介绍了C++中的预编译函数及其应用,包括#include、#define、#ifdef、#ifndef等预处理指令,并阐述了头文件的多次包含问题及预编译保护的解决方案。此外,还总结了预编译常量的作用和头文件包含的两种方式,旨在帮助开发者高效管理和优化C++代码。

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

首先了解一下预编译函数:

  #include    包含一个源代码文件
  #define     定义宏
  #undef      取消已定义的宏
  #if         如果给定条件为真,则编译下面代码
  #ifdef      如果宏已经定义,则编译下面代码
  #ifndef     如果宏没有定义,则编译下面代码
  #elif       如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
  #endif      结束一个#if……#else条件编译块
  #error      停止编译并显示错误信


#include小结:

1. #include <iostream.h>和#include <iostream>区别

#include <iostream.h>是老规范,现已经抛弃

#include <iostream>是新规范,使用名称空间避免名称冲突。即将所有的定义放在了一个名称空间std中

 

2. #include <iostream>和#include "iostream"区别

#include <iostream>直接在系统的路径下查找此头文件。多是系统的头文件

#include "iostream"首先在当前目录查找,如果没有找到再到系统目录查找

 

3. 头文件的多次包含问题

编译器对每个文件只编译一次生成一份机器代码.obj,如果在多个地方包含了同一个头文件,则会出现多次包含的错误,即试图让编译器将此文件编译多次生成多份机器代码。

预编译保护解决此问题。


 #ifdef    #ifndef    #define    #endif 条件编译小结

    #ifdef DEBUG   // 测试DEBUG是否已经定义
    #ifndef DEBUG // 测试DEBUG是否没有定义
    #define             // 定义DEBUG
    #endif                // #ifdef或者#ifndef语句结束

    C++中,定义头文件时,为了避免头文件被多次引用而造成的重复定义,需要将整个头文件内容包含在下面的预编译指令中(假设头文件为file.h):
    #ifndef FILE_H
    #define FILE_H
    // 头文件的内容
    #endif


常见的预编译常量小结

    __plusplus     // 编译C++程序时编译器自动定义
    __STDC__    // 编译C程序时编译器自动定义
    __FILE__      // 当前编译的文件名 
    __LINE__      // 当前编译文件的当前行
    __DATE__    // 编译文件时的日期 
    __TIME__     // 编译文件时的时间

    其中,__FILE__与__LINE__在编译期间是不断更新的,其他四个变量在编译期间固定。

   assert()
    C语言定义的预编译宏,断言某个表达式为true;若为false,则抛出异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值