You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C中有比stdarg更好的可变参数函数吗?

是的,C11引入了一个新的可变参数函数替代方案:_Generic。使用_Generic,您可以为特定类型的参数提供不同的行为。

下面是一个示例程序,演示如何使用_Generic编写可变参数函数

#include <stdio.h>

#define print(x) _Generic((x),
int: print_int,
double: print_double,
char*: print_string,
default: print_unknown
)(x)

void print_int(int value) { printf("The value of the integer is: %d\n", value); }

void print_double(double value) { printf("The value of the double is: %f\n", value); }

void print_string(char* value) { printf("The value of the string is: %s\n", value); }

void print_unknown(...) { printf("Unknown type\n"); }

int main(void) { print(10); print(3.14); print("Hello, World!"); print('c'); return 0; }

输出将会是:

The value of the integer is: 10 The value of the double is: 3.140000 The value of the string is: Hello, World! Unknown type

这里,使用#define定义了一个print宏,它使用_Generic根据传递给它的参数类型调用不同的函数。如果传递给print的参数类型不在列表中,则会调用print_unknown函数

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

字节开源 Monoio :基于 io-uring 的高性能 Rust Runtime

就是这个例子里面的 sum 函数。通过 Async 和 Await 语法可以非常友好地把这些异步函数给嵌套起来。``` #[inline(never)] async fn do_http() -> i32 { // do http request in async way ... &'a ()>, } ```Future trait 里面除了有包含自身状态机的可变以借用以外,还有一个很重要的是 Context,Context 内部当前只有一个 Waker 有意义,这个 waker 我们可以暂时认为它就是一个 trait object ,...

节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具

Rspack 是一个基于 Rust 的高性能构建引擎,它可以与 Webpack 生态系统交互,并提供更好的构建性能。在处理具有复杂构建配置的巨石应用时,Rspack 可以提供 5~10 倍的编译性能提升。字节跳动将 Rspack 开源后,它... 它也支持传递函数来做运行时动态配置。 虽然使用传统的 IPC 也可以模拟函数调用,但我们需要在 native 侧调用一个 Javascript 的函数时,把参数先序列化,通过 IPC 传递到 Javascript,然后 Javascript 这边再...

2022 年每个开发者必知的云原生趋势 | 社区征文

microservices, immutable infrastructure, and declarative APIs exemplify this approach.>> These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.根据官方定义,我们总结下云原生就是:- 基于容器、服务网格、微服务、不可变基础设施和...

什么是云原生?

=&rk3s=8031ce6d&x-expires=1715962859&x-signature=41RDL9zronJ%2BOka63StYpq03nO0%3D)容器是云原生技术的基石,当我们提到容器时,首先想到的应该就是 Docker ,但最早的容器形态并不是 Docker 所创造的,而是早期的 PaaS 项目 Cloud Foundry,其旨在模拟本地环境,一键把应用部署到云上,带来更好的用云体验。它通过 Cgroups 和 Namespace 机制来为应用创建称作“沙盒”的隔离环境,也就是早期的容器形态。但是一键部署背后...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

C中有比stdarg更好的可变参数函数吗? -优选内容

字节开源 Monoio :基于 io-uring 的高性能 Rust Runtime
就是这个例子里面的 sum 函数。通过 Async 和 Await 语法可以非常友好地把这些异步函数给嵌套起来。``` #[inline(never)] async fn do_http() -> i32 { // do http request in async way ... &'a ()>, } ```Future trait 里面除了有包含自身状态机的可变以借用以外,还有一个很重要的是 Context,Context 内部当前只有一个 Waker 有意义,这个 waker 我们可以暂时认为它就是一个 trait object ,...
节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具
Rspack 是一个基于 Rust 的高性能构建引擎,它可以与 Webpack 生态系统交互,并提供更好的构建性能。在处理具有复杂构建配置的巨石应用时,Rspack 可以提供 5~10 倍的编译性能提升。字节跳动将 Rspack 开源后,它... 它也支持传递函数来做运行时动态配置。 虽然使用传统的 IPC 也可以模拟函数调用,但我们需要在 native 侧调用一个 Javascript 的函数时,把参数先序列化,通过 IPC 传递到 Javascript,然后 Javascript 这边再...
2022 年每个开发者必知的云原生趋势 | 社区征文
microservices, immutable infrastructure, and declarative APIs exemplify this approach.>> These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.根据官方定义,我们总结下云原生就是:- 基于容器、服务网格、微服务、不可变基础设施和...
什么是云原生?
=&rk3s=8031ce6d&x-expires=1715962859&x-signature=41RDL9zronJ%2BOka63StYpq03nO0%3D)容器是云原生技术的基石,当我们提到容器时,首先想到的应该就是 Docker ,但最早的容器形态并不是 Docker 所创造的,而是早期的 PaaS 项目 Cloud Foundry,其旨在模拟本地环境,一键把应用部署到云上,带来更好的用云体验。它通过 Cgroups 和 Namespace 机制来为应用创建称作“沙盒”的隔离环境,也就是早期的容器形态。但是一键部署背后...

C中有比stdarg更好的可变参数函数吗? -相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询