首页 > 其他分享 >高级宏定义

高级宏定义

时间:2024-11-05 15:42:21浏览次数:1  
标签:定义 int 高级 printf PI 替换 define

宏定义定义符号常量

  • #define [] #undef PI 约定为大写, 编译器不检查宏定义, 不加分号;
  • 类似sed流, 带参数必须与宏名()紧密连接, 否则是替换功能

三大预处理功能之一的本质--机械替换不智能

/// C:宏定义定义符号常量

#include <stdio.h>

// 宏定义替换所有PI
#define PI 3.14

int main(void) {
    int r;
    float s;

    printf("请输入圆的半径:");
    scanf("%d", &r);

    s = PI * r * r;
    printf("圆的面积是:%.2f\n", s);

#undef PI; // 结束PI的替换

    return 0;
}

嵌套宏定义

///: C:嵌套宏定义
#include <stdio.h>

#define PI 3.14
#define R 6371
#define V PI * R * R * R * 4 / 3

int main(void) {

    printf("地球的体积大概是: %.2f\n", V);

    return 0;
}

参数宏定义

///: C:参数宏定义
// 无需为参数显式声明类型, 空格作为替换匹配, 使用括号转义
#include <stdio.h>

#define MAX(x,y) (((x) > (y)) ? (x): (y))

int main(void) {
    int x, y;

    printf("请输入两个整数: ");
    scanf("%d%d", &x, &y);
    printf("%d 是较大的整数!\n", MAX(x, y)); // MAX(x,y) 替换为 (((x) > (y)) ? (x): (y))

    return 0;
}

标签:定义,int,高级,printf,PI,替换,define
From: https://www.cnblogs.com/nagisb/p/18528129

相关文章

  • 手把手教你编写自定义Categraf插件
    本文分享自天翼云开发者社区《手把手教你编写自定义Categraf插件》,作者:任****佳Categraf是一个监控采集Agent,类似Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供监控数据采集能力,采用All-in-one的设计,不但支持指标采集,也希望支持日志和调用链路的数据采......
  • Java面试题中高级进阶(JVM篇)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!什么是StopTheWorld?什么是OopMap?说一下JVM的主要组成部分及其作用?什么是指针碰撞?什么是空闲列表?什么是TLAB?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘***12万字的java面试题整理***什么是StopT......
  • 稀疏感知&稀疏预定义数据调度器
    稀疏感知的数据调度器和稀疏预定义的数据调度器虽然都针对稀疏数据的高效调度,但在处理方式和灵活性上有所不同。稀疏感知数据调度器(Sparse-AwareScheduler)稀疏感知数据调度器的核心在于其动态适应性和智能调度能力。它不仅知道数据是稀疏的,还能动态识别稀疏性模式并实时适应调......
  • HarmonyOS 开发实践——基于自定义注解和代码生成实现路由框架
    ......
  • 如何定义ggplot2 的scale_fill_manual() 中参数 values 的命名向量?
    需求背景对R语言中,ggplot2的scale_fill_manual()函数的values参数理解不到位,它这里需要的是一个命名向量,无法在c()函数内部直接创建一个向量。举例说明,以不同分类数据的条形图来作为图例。比如我有14个不同物种,绘制其不同颜色的条形图,注意颜色不能随便定义,需要指定每个......
  • 「Mac畅玩鸿蒙与硬件23」鸿蒙UI组件篇13 - 自定义组件的创建与使用
    自定义组件可以帮助开发者实现复用性强、逻辑清晰的界面模块。通过自定义组件,鸿蒙应用能够提高代码的可维护性,并简化复杂布局的构建。本篇将介绍如何创建自定义组件,如何向组件传递数据,以及如何在不同页面间复用这些组件。关键词自定义组件复用组件属性传递组件通信组件......
  • C语言版数据结构算法(考研初试版—3)--链表定义、创建
    2、链表1、链表结构体typedefstructLNode{   intdata;   structLNode*next; }LNode,*LinkList; 2、遍历链表voidPrintList(LinkListL){   LinkListp=L->next;//Skiptheheadnodewhichisadummynode   while(p!=......
  • python-16-常见高级函数
    python-16-常见高级函数一.说明python中的基础系列中的关于函数部分,还有一些特殊函数叫高级函数,在真实项目中开发使用频率较高,说句人话,就是真香实用!。二.定义在Python中,高阶函数是指接受其他函数作为参数或返回一个函数的函数。高阶函数使得我们能够以更灵活和简洁的方......
  • Nginx --- 高级前端必备
    Nginx是在前端服务部署时是很重要的一部分,也是部署的基础,学会了通过Nginx部署前端资源,才能继续后续的一系列进阶。一、了解一点简单的Nginx知识本节内容作为基础知识,如果熟悉Nginx可以略过,如果不熟悉可以实际操作一下。现在服务器安装Nginx很简单,一般只需要两行命令即可,安......
  • Android的自定义View和自定义ViewGroup
    Android自定义视图(View)和视图组(ViewGroup)详解在Android开发中,有时候我们需要创建一些标准控件无法满足需求的自定义视图(View)和视图组(ViewGroup)。本文将详细介绍如何创建自定义视图和视图组,包括构造方法、自定义属性、绘制逻辑、测量逻辑、布局逻辑和设置布局参数等内容。1.......