常用C/C++预处理指令详解

常用C/C++预处理指令详解

什么是预处理指令?

C/C++语言中,预处理指令是用于在实际编译前对代码进行预处理的指令。预处理器会在实际编译之前对指令进行展开、替换和操作。

常用预处理指令

#define

#define指令是预处理中定义宏的指令,通过这个指令可以方便地定义常量、函数和表达式等。语法为#define 宏名 宏值,其中宏名为任意字母、数字、下划线组成的组合,常用于定义一个常量。例如:

#define PI 3.14

在程序中,可以直接使用PI作为常量3.14的替代。

#ifdef

#ifdef指令是预处理中条件编译的指令,用于判断某个宏是否已经被定义过。语法为#ifdef 宏名。当宏名已经被定义过时,条件成立,指令块将被编译,否则指令块将被忽略。例如:

#ifdef DEBUG
    printf("Debug mode is enabled.\n");
#endif

上述代码中,当宏DEBUG被定义时,条件成立,printf语句将被编译。

#ifndef

#ifdef相似,#ifndef也是预处理中条件编译的指令,用于判断宏是否未被定义。语法为#ifndef 宏名。当宏未被定义时,条件成立,指令块将被编译,否则指令块将被忽略。例如:

#ifndef PI
#define PI 3.14
#endif

在上述代码中,当宏PI未被定义时,条件成立,#define指令被执行并定义常量PI为3.14。

#include

#include指令是预处理中引用头文件的指令,用于将其他文件中的声明引入到当前文件中。语法为#include <头文件名>#include "头文件名"。其中,<>包含的头文件是系统头文件,而""包含的头文件是用户自己编写的头文件。例如:

#include <stdio.h>
#include "myheader.h"

上述代码中,<stdio.h>为C语言标准头文件,而"myheader.h"为用户自己编写的头文件。

示例

示例1:使用#define定义常量

#include <stdio.h>

#define PI 3.14

int main()
{
    float radius = 10;
    float area = PI * radius * radius;
    printf("The area of a circle with radius %f is %f.\n", radius, area);
    return 0;
}

在上述代码中,常量PI被定义为3.14后,可以直接使用PI作为常量3.14的替代。

示例2:使用#ifndef的条件编译

#include <stdio.h>

#ifndef MAX_NUM
#define MAX_NUM 100
#endif

int main()
{
    int array[MAX_NUM];
    for (int i = 0; i < MAX_NUM; i++)
    {
        array[i] = i;
    }
    for (int i = 0; i < MAX_NUM; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
    return 0;
}

在上述代码中,当宏MAX_NUM未被定义时,条件成立,#define指令被执行并定义常量MAX_NUM为100。后续使用MAX_NUM定义了存储整数数组大小的常量,定义一次后可以全局使用。当宏MAX_NUM被定义时,#ifndef条件不成立,#define指令将被跳过,不会对程序造成影响。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:常用C/C++预处理指令详解 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • iOS Runtime详解(新手也看得懂)

    iOS Runtime详解(新手也看得懂) 什么是Runtime? Runtime是指在运行时进行操作的能力。在iOS开发中,Runtime是一种基于C语言的API,它可以动态地创建类、对象和修改类的属性和方法等。其主要的作用是在编译阶段之外,给我们提供了对类和对象的管理。 Runtime的应用场景 动态给类添加属性(associative referenc…

    C 2023年5月22日
    00
  • Golang 如何解析和生成json

    下面是关于 “Golang 如何解析和生成json” 的完整攻略。 什么是json 首先,我们需要了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语法,可以被多种编程语言所支持。在Golang中,需要使用标准库中的encoding/json包来解析和生成JSON格式的数…

    C 2023年5月23日
    00
  • 详解json string转换为java bean及实例代码

    下面是“详解json string转换为java bean及实例代码”的完整攻略: 什么是JSON JSON是一种轻量级的数据交换格式,具有易读易写、占用带宽小、易解析和支持多种语言等优点。在Web开发中,常用于数据传输和Web API。 JSON to Java Bean 转换 在Java中,我们可以通过JSON的转换将JSON字符串转换成Java Bea…

    C 2023年5月23日
    00
  • 关于指针、数组、字符串的恩怨,这里有你想知道的一切

    指针、数组、字符串的恩怨,这有你想知道的一切 内存组成 为了讲明白不同方式下数组、字符串定义时在内存中的存放方式,需要先对计算机内存分区组成有所了解: 堆区 堆区 (Heap):由程序员手动申请释放的内存空间。 C中:malloc()和colloc()函数申请,用free()释放 若不用free()释放,容易造成内存泄露(即内存被浪费、耗尽)。 ptr = …

    C语言 2023年4月18日
    00
  • C语言银行系统课程设计

    欢迎来到C语言银行系统课程设计攻略。在这篇攻略中,我将为您提供一个完整的设计过程,以帮助您在C语言银行系统课程中大获成功。 确定项目目标 首先,要确定本项目的目标。在这个课程设计项目中,我们需要设计一个银行系统,包括以下功能: 银行账户开户和添加 银行账户存款和取款 银行账户余额查询 设计数据结构 接下来,我们需要设计数据结构,以存储银行系统所需的数据。我们…

    C 2023年5月23日
    00
  • 基于Java中Math类的常用函数总结

    基于Java中Math类的常用函数总结 简介 Java的Math类为开发者提供了许多数学方法,使用这些方法能够方便地对数据进行处理和计算。本篇文章将对Java中Math类的一些常用函数进行总结和详细讲解,包括:绝对值函数、对数函数、三角函数等。 绝对值函数 绝对值函数在数学中也称为模函数,是一个常用的函数。在Java中,可以使用Math类中的abs函数来计算…

    C 2023年5月22日
    00
  • 到底如何呢?富士康Ligtning&USB-C数据线测评

    制定测试方案 在进行富士康Ligtning&USB-C数据线的测评之前,需要制定测试方案。主要需要测试以下几点: 兼容性 传输速度 做工质量 安全性能 兼容性测试 取一个iOS设备,如iPhone,连接富士康Ligtning&USB-C数据线,测试手机是否能够正常充电和传输数据。同样的,取一个安卓设备连接USB-C接口进行测试,检查是否能正常…

    C 2023年5月23日
    00
  • 深入理解C++模板如何实现多态思想

    深入理解C++模板如何实现多态思想 C++模板是一种高度通用化的编程工具,除了可以用来实现代码复用之外,还可以用来实现多态的编程思想。在这里,我将详细介绍如何使用C++模板来实现多态的思想,涵盖泛型编程、函数模板、类模板等方面。 一、泛型编程泛型编程是C++模板多态思想的最基本组成部分,其核心思想是将数据类型与算法分离,从而实现代码的通用化。在使用C++模板…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部