• 预处理器&预处理变量&头文件保护&条件编译


    【常见的预处理功能】

    1. #include
    2. 头文件保护符
    3. 条件编译

    【预处理器】

      编译之前执行的一段程序,可以部分地改变我们所写的程序

      举个例子:当预处理器看到#include标记时就会用指定的头文件的内容代替#include

     

    【预处理变量】

      不属于命名空间std,由预处理器负责管理

      预处理变量有两种状态:已定义和未定义

      当用到一个预处理变量时,预处理器会自动地将它替换为实际值。

    【头文件保护符】

      使用预处理变量以防止头文件被某个文件重复包含。

      4个指令:#define、#ifdef、#ifndef、#endif

    • #define:把一个名字设定为预处理变量
    • #ifdef及#ifndef:检查某个指定的预处理变量是否已经定义
    • #ifdef:当且仅当变量已定义时为真
    • #ifndef:当且仅当变量未定义时为真
    • 一旦结果检查为真,则执行后续操作直至遇到#endif指令为止。

      注:预处理变量无视C++关于作用域的规则。

    【条件编译】

    当不希望对源程序所有内容都进行编译时,我们可以使用“条件编译”。

    预处理程序提供了条件编译的功能,条件编译有三种形式:#ifdef 、#ifndef 、#if

    1. #ifdef形式的条件编译

    #ifdef 标识符
    	程序段1
    #else
    	程序段2
    #endif 
    

    注:如果标识符已被#define定义过,则对程序段1进行编译,而不编译程序段2,直到遇到#endif

    2. #ifndef形式的条件编译

    #ifndef 标识符
    	程序段1
    #else
    	程序段2
    #endif
    

    注:与#ifdef相反,即标识符没有被#define定义过,才编译程序段1。

    3. #if形式的条件编译

    #if 常量表达式 
    	程序段1
    #else
    	程序段2
    #endif 
    

    注:如果常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译

  • 相关阅读:
    图像滤镜艺术---乐高像素拼图特效滤镜的代码实现
    假设你也23
    seajs载入流程图
    android 怎样将主菜单图标改成按安装时间排序
    热力学第一定律的社会学思考
    Django创建数据表
    KeyPress 和KeyDown 、KeyPress之间的区别
    Delphi 制作自定义数据感知控件并装入包(dpk文件)中(与DBText类似的数据感知控件)
    Delphi中的窗体创建与销毁
    Delphi ADOQuery连接数据库的查询、插入、删除、修改
  • 原文地址:https://www.cnblogs.com/xzxl/p/7647389.html
Copyright © 2020-2023  润新知