其他分享
首页 > 其他分享> > 面试题 - 用纯C语言实现支持多种数据类型(包括用户自定义类型)的加减计算器(C语言泛型)

面试题 - 用纯C语言实现支持多种数据类型(包括用户自定义类型)的加减计算器(C语言泛型)

作者:互联网

#include <stdio.h>
#include <stdlib.h>

// 内置类型 int addint(int a, int b) { return a+b;}; long addlong(long a, long b) { return a+b;};
// 自定义类型
typedef struct _mytype { int m; }mytype; mytype* addmytype(mytype* a, mytype* b) { mytype* res = (mytype*) malloc(sizeof(mytype)); res->m = a->m + b->m; return res; }
#define _add(T,a,b) add##T(a, b) #define ADD(a,b) _Generic((a), \ int: _add(int, a, b), \ long: _add(long, a, b), \ mytype*: _add(mytype, a, b), \ default: printf("error: unknown type")\ ) int main() { int a=1, b=2; int c = ADD(a,b); printf("int 1+2=%d\n", c); long a1=3, b1=4; printf("long 3+4=%ld\n", ADD(a1,b1)); mytype a2, b2; a2.m = 5; b2.m = 6; mytype *c2 = ADD(&a2, &b2); printf("mytype 5+6=%d\n", c2->m); }

_Generic 参考:https://blog.csdn.net/qq_37151416/article/details/113203701

标签:面试题,自定义,int,ADD,long,C语言,add,printf,mytype
来源: https://www.cnblogs.com/lihuifeng/p/16439304.html