c语言中while(op),如何用C预处理器编写while循环?

news/2024/11/24 13:21:03/

好吧,这不是一个while循环,而是一个计数器循环,尽管如此,在干净的CPP中也可以循环(没有模板,也没有C ++)

#ifdef pad_always

#define pad(p,f) p##0

#else

#define pad0(p,not_used) p

#define pad1(p,not_used) p##0

#define pad(p,f) pad##f(p,)

#endif

// f - padding flag

// p - prefix so far

// a,b,c - digits

// x - action to invoke

#define n0(p,x)

#define n1(p,x)         x(p##1)

#define n2(p,x) n1(p,x) x(p##2)

#define n3(p,x) n2(p,x) x(p##3)

#define n4(p,x) n3(p,x) x(p##4)

#define n5(p,x) n4(p,x) x(p##5)

#define n6(p,x) n5(p,x) x(p##6)

#define n7(p,x) n6(p,x) x(p##7)

#define n8(p,x) n7(p,x) x(p##8)

#define n9(p,x) n8(p,x) x(p##9)

#define n00(f,p,a,x)                       n##a(pad(p,f),x)

#define n10(f,p,a,x) n00(f,p,9,x) x(p##10) n##a(p##1,x)

#define n20(f,p,a,x) n10(f,p,9,x) x(p##20) n##a(p##2,x)

#define n30(f,p,a,x) n20(f,p,9,x) x(p##30) n##a(p##3,x)

#define n40(f,p,a,x) n30(f,p,9,x) x(p##40) n##a(p##4,x)

#define n50(f,p,a,x) n40(f,p,9,x) x(p##50) n##a(p##5,x)

#define n60(f,p,a,x) n50(f,p,9,x) x(p##60) n##a(p##6,x)

#define n70(f,p,a,x) n60(f,p,9,x) x(p##70) n##a(p##7,x)

#define n80(f,p,a,x) n70(f,p,9,x) x(p##80) n##a(p##8,x)

#define n90(f,p,a,x) n80(f,p,9,x) x(p##90) n##a(p##9,x)

#define n000(f,p,a,b,x)                           n##a##0(f,pad(p,f),b,x)

#define n100(f,p,a,b,x) n000(f,p,9,9,x) x(p##100) n##a##0(1,p##1,b,x)

#define n200(f,p,a,b,x) n100(f,p,9,9,x) x(p##200) n##a##0(1,p##2,b,x)

#define n300(f,p,a,b,x) n200(f,p,9,9,x) x(p##300) n##a##0(1,p##3,b,x)

#define n400(f,p,a,b,x) n300(f,p,9,9,x) x(p##400) n##a##0(1,p##4,b,x)

#define n500(f,p,a,b,x) n400(f,p,9,9,x) x(p##500) n##a##0(1,p##5,b,x)

#define n600(f,p,a,b,x) n500(f,p,9,9,x) x(p##600) n##a##0(1,p##6,b,x)

#define n700(f,p,a,b,x) n600(f,p,9,9,x) x(p##700) n##a##0(1,p##7,b,x)

#define n800(f,p,a,b,x) n700(f,p,9,9,x) x(p##800) n##a##0(1,p##8,b,x)

#define n900(f,p,a,b,x) n800(f,p,9,9,x) x(p##900) n##a##0(1,p##9,b,x)

#define n0000(f,p,a,b,c,x)                               n##a##00(f,pad(p,f),b,c,x)

#define n1000(f,p,a,b,c,x) n0000(f,p,9,9,9,x) x(p##1000) n##a##00(1,p##1,b,c,x)

#define n2000(f,p,a,b,c,x) n1000(f,p,9,9,9,x) x(p##2000) n##a##00(1,p##2,b,c,x)

#define n3000(f,p,a,b,c,x) n2000(f,p,9,9,9,x) x(p##3000) n##a##00(1,p##3,b,c,x)

#define n4000(f,p,a,b,c,x) n3000(f,p,9,9,9,x) x(p##4000) n##a##00(1,p##4,b,c,x)

#define n5000(f,p,a,b,c,x) n4000(f,p,9,9,9,x) x(p##5000) n##a##00(1,p##5,b,c,x)

#define n6000(f,p,a,b,c,x) n5000(f,p,9,9,9,x) x(p##6000) n##a##00(1,p##6,b,c,x)

#define n7000(f,p,a,b,c,x) n6000(f,p,9,9,9,x) x(p##7000) n##a##00(1,p##7,b,c,x)

#define n8000(f,p,a,b,c,x) n7000(f,p,9,9,9,x) x(p##8000) n##a##00(1,p##8,b,c,x)

#define n9000(f,p,a,b,c,x) n8000(f,p,9,9,9,x) x(p##9000) n##a##00(1,p##9,b,c,x)

#define n00000(f,p,a,b,c,d,x)                                   n##a##000(f,pad(p,f),b,c,d,x)

#define n10000(f,p,a,b,c,d,x) n00000(f,p,9,9,9,9,x) x(p##10000) n##a##000(1,p##1,b,c,d,x)

#define n20000(f,p,a,b,c,d,x) n10000(f,p,9,9,9,9,x) x(p##20000) n##a##000(1,p##2,b,c,d,x)

#define n30000(f,p,a,b,c,d,x) n20000(f,p,9,9,9,9,x) x(p##30000) n##a##000(1,p##3,b,c,d,x)

#define n40000(f,p,a,b,c,d,x) n30000(f,p,9,9,9,9,x) x(p##40000) n##a##000(1,p##4,b,c,d,x)

#define n50000(f,p,a,b,c,d,x) n40000(f,p,9,9,9,9,x) x(p##50000) n##a##000(1,p##5,b,c,d,x)

#define n60000(f,p,a,b,c,d,x) n50000(f,p,9,9,9,9,x) x(p##60000) n##a##000(1,p##6,b,c,d,x)

#define n70000(f,p,a,b,c,d,x) n60000(f,p,9,9,9,9,x) x(p##70000) n##a##000(1,p##7,b,c,d,x)

#define n80000(f,p,a,b,c,d,x) n70000(f,p,9,9,9,9,x) x(p##80000) n##a##000(1,p##8,b,c,d,x)

#define n90000(f,p,a,b,c,d,x) n80000(f,p,9,9,9,9,x) x(p##90000) n##a##000(1,p##9,b,c,d,x)

#define cycle5(c1,c2,c3,c4,c5,x) n##c1##0000(0,,c2,c3,c4,c5,x)

#define cycle4(c1,c2,c3,c4,x) n##c1##000(0,,c2,c3,c4,x)

#define cycle3(c1,c2,c3,x) n##c1##00(0,,c2,c3,x)

#define cycle2(c1,c2,x) n##c1##0(0,,c2,x)

#define cycle1(c1,x) n##c1(,x)

#define concat(a,b,c) a##b##c

#define ck(arg) a[concat(,arg,-1)]++;

#define SIZEOF(x) (sizeof(x) / sizeof((x)[0]))

void check5(void)

{

int i, a[32769];

for (i = 0; i < SIZEOF(a); i++) a[i]=0;

cycle5(3,2,7,6,9,ck);

for (i = 0; i < SIZEOF(a); i++) if (a[i] != 1) printf("5: [%d] = %d\n", i+1, a[i]);

}


http://www.ppmy.cn/news/518576.html

相关文章

巡风探索

模块内容包括&#xff1a; ├─nascan │ │ NAScan.py # 网络资产信息抓取引擎 │ │ │ ├─lib │ │ cidr.py │ │ common.py 其他方法 │ │ icmp.py # ICMP发送类 │ │ log.py # 日志输出 │ │ mongo.py # 数据库连接 │ │ …

springboot dubbo应用的链路信息采集——skywalking运行环境搭建

本文已参与腾源会发起的「开源摘星计划」 视频教程一 skywalking8.7.0搭建之centos7安装 视频教程二 skywalking8.7.0搭建之esoap 安装规划 skywalking java agent用于采集链路信息&#xff0c;kafak用于信息缓存&#xff0c;skywalking oap cluster&#xff08;Observabilit…

从芯片到系统:FPGA加速卡的发展历程与展望

https://www.toutiao.com/a6666758560585630220/ 来源&#xff1a;老石谈芯 半导体行业观察 一个重要的趋势 作为加速云数据中心的重要组件&#xff0c;FPGA已经开始了它在数据中心领域的广泛使用。除了像微软、亚马逊这样的大型云服务提供商之外&#xff0c;FPGA也逐渐开始进…

软硬件融合加速技术系列文章

目录 文章目录 目录计算机组成原理Linux 操作系统原理内存管理进程管理内核协议栈文件系统 异构计算GPUDPUFPGAASIC 大规模云计算高性能数据面技术HPC 网络技术DPDKVPPXDP/eBPFP4 可编程网络 计算机组成原理 《计算机体系结构的新黄金时代》 《计算机组成原理 — 基本硬件设备…

使用tftp、nand等uboot自带操作完成内核、文件系等下载烧写

不用各种板商的工具&#xff0c;因为用了不知道为什么。。。除了烧写uboot没办法。。。 使用tftp、nand等uboot自带操作&#xff0c;操作完成内核、设备树、文件系等下载烧写 实际uboot启动后&#xff0c;tftp从远程机器获取的数据&#xff0c;是往ram上传递的&#xff0c;一…

利用ffmpeg+QSV进行视频处理

引言 ffmpeg是一个视频处理领域的“瑞士军刀”&#xff0c;在很多应用中都会用到&#xff0c;这里就不详细介绍它的使用啦&#xff0c;有需要的可以参考其官方文档和大量网上的资料。 这里着重介绍一下qsv这个东东&#xff0c;qsv的全称是Quick Sync Video Acceleratio&#xf…

思科设备SSH登录配置

某公司有一台核心设备R1&#xff0c;为了方便进行管理&#xff0c;配置SSH远程登录&#xff0c;使用路由器R2模拟客户端&#xff0c;配置SSH协议登录R1。 实验拓扑如下&#xff1a; R1配置&#xff1a; Router>en Router#conf Router(config)#hostname R1 R1(config)#int …

d2l学习_第六章_搭建网络

x.1 layer and block 网络模型由layer层和module块组成。多个layer形成层组&#xff0c;层组即为block块。layer 和 block都是由module的子类构成的&#xff0c;而net(x)实际上调用的是net.__call__(x)。 无论是自定义块还是自定义层都需要定义__init__和__forward__方法。其…