• 编译预处理指令:文件包含指令、宏定义指令、条件编译指令


    编译预处理指令:文件包含指令、宏定义指令、条件编译指令。“#”开头,不加分号“;”

    1、文件包含指令:
      #include<文件名> 标准目录下搜索
      #include"文件名" 当前目录下搜索,再在标准目录下搜索

    2、宏定义指令:
      #define 宏名 宏文本 //宏名习惯大写
      #undef 宏名 //删除宏

      空宏,#define PI //常与条件编译指令一起使用
      无参宏,#define PI 3.14 //常量表达式,PI=3.14
      有参宏,#define AREA(x) 3.14*x*x //多参数间用“,”隔开

    #include<iostream>
    #define AREA(x) 3.14*(x)*(x) //如果不加括号,出现3.14*3+7*3+7错误
    using namespace std;
    int main() {
        cout << AREA(3+7) << endl;
        return 0;
    }

    3、条件编译指令:可减少被编译的语句,提高效率。
      格式1:
      #ifdef 空宏名 //若空宏已经定义,则编译代码块1
        代码块1
      #else
        代码块2
      #endif

    格式2:常量表达式可以是包含宏、算术运算、逻辑运算等等的合法C常量表达式。结果不为0(为真),则编译代码块1
      #if 常量表达式
        代码块1
      #else
        代码块2
      #endif

    说明:#ifdef与#if的区别,#ifdef只判断宏是否被定义,而不关注其值。#if判断其值的真假(0假,非0真)。

    //格式1:
    #include<iostream>
    #define ENGLISH_VERSION //定义空宏,若此行被注释,执行中文代码块
    using namespace std;
    int main() {
    #ifdef ENGLISH_VERSION //空宏被定义,执行英文代码块
        cout << "Input a radius please:";
    #else //否则,执行中文代码块
        cout << "请输入圆的半径:";
    #endif 
        double r;
        cin >> r;
    #ifdef ENGLISH_VERSION
        cout << "Radius is " << r;
    #else
        cout << "半径是" << r;
    #endif 
        return 0;
    }
    //格式2:
    #include<iostream>
    #define ENGLISH_VERSION 0 //定义符号常量
    using namespace std;
    int main() {
    #if ENGLISH_VERSION //格式2,判断ENGLISH_VERSION是否为真
        cout << "Input a radius please:";
    #else //为假,执行中文代码块
        cout << "请输入圆的半径:";
    #endif 
        double r;
        cin >> r;
    #if ENGLISH_VERSION
        cout << "Radius is " << r;
    #else
        cout << "半径是" << r;
    #endif 
        return 0;
    }
  • 相关阅读:
    进程与线程
    linux网关服务器
    linux硬盘分区和fdisk命令
    MyISAM与InnoDB两者之间区别与选择(转)
    系统吞吐量与QPS/TPS
    linux最大打开文件句柄数
    内存性能测试 Memtester+mbw
    硬盘性能测试
    使用JNA访问WindowsAPI操作Windows窗口元素
    [博客页面装饰]----[人体时钟]插件
  • 原文地址:https://www.cnblogs.com/xixixing/p/10145588.html
Copyright © 2020-2023  润新知