美文网首页
定义不同类型的宏函数

定义不同类型的宏函数

作者: xyyquier | 来源:发表于2018-01-17 20:09 被阅读0次

宏函数

 

1. ## :C语言中的##是连接符,将宏参数与之前的token(参数/字符串空格等)连接起来。

2.

#include <stdio.h>

#define GEN_MAX(type) \

type type##_max(type x, type y) \

{ \

        return x > y ? x : y;      \

}

int main()

{

        int id1 = 3;

        int id2 = 4;

        int id3 = 0;

        float fd1 = 1.0f;

        float fd2 = 2.0f;

        float fd3 = 0.5f;

        GEN_MAX(int);

        fprintf(stdout,"max %d and %d  is %d\n", id1, id2, int_max(id1,id2));

        fprintf(stdout,"max %d and %d  is %d\n", id1, id3, int_max(id1,id3));

        GEN_MAX(float);

        fprintf(stdout,"max %f and %f is %f \n", fd1, fd2, float_max(fd1,fd2));

        fprintf(stdout,"max %f and %f is %f \n", fd1, fd3, float_max(fd1,fd3));

        return 0;

}

使用 ## 定义了根据传入参数确定类型的函数,当传入int时,我们定义了 int int_max(int, int)函数,传入float时,定义了float float_max(float ,float)函数。

当然,可以直接定义 #define MAX(x,y) ((x) > (y) ? (x):(y)),此宏函数不会对参数做检查。不管传入int还是float都会按照int或者float比较。

相关文章

  • 定义不同类型的宏函数

    宏函数 1.## :C语言中的##是连接符,将宏参数与之前的token(参数/字符串空格等)连接起来。 2. #i...

  • 【TS】函数

    函数定义 不带类型 带类型 带完整类型 定义带类型,函数不带类型 注:定义类型的参数名,可以与定义函数的参数名不同...

  • 枚举

    定义一个枚举 特殊类型enum类似oc的宏定义方法 在enum里定义函数 定义一个

  • 准备:回顾c

    宏定义 关键字 define 定义一个常量的方法(即宏定义) 带参数的宏定义 宏函数的定义 使用宏函数的好处是,不...

  • C标准库——

    setjmp.h头文件定义了宏setjmp(), 函数longjmp()和变量类型 jmp_buf, 该变量类型会...

  • C++inline的初步研究

    C++的inline函数在编译阶段会被替换成函数体中的内容,与宏定义不同的时,宏定义是单纯的字面替换,无法检验语法...

  • 模板

    如果要求两个数较大值函数max(a, b),对于a,b的不同类型,都有相同的处理形式。 我们可以使用宏定义来编写一...

  • TypeScript 函数

    TypeScript 函数 函数类型 为函数定义类型 使用这种方式,为函数定义返回的类型 书写函数类型 书写函数类...

  • 函数

    普通定义 为函数定义类型 完整的函数类型 函数类型包含两部分:参数类型返回值类型 推断类型 函数定义时,如果赋值语...

  • C++学习笔记(函数重载、extern、默认参数)

    函数重载 定义1、函数名相同2、参数个数不同,参数类型不同,参数顺序不同 代码实例如下: //1调用函数//a//...

网友评论

      本文标题:定义不同类型的宏函数

      本文链接:https://www.haomeiwen.com/subject/flauoxtx.html