首页 > 其他分享 >可变参数宏-默认参数

可变参数宏-默认参数

时间:2023-05-03 11:23:54浏览次数:30  
标签:__ VA int ARGS 默认 参数 func 可变 define

默认参数

#include <stdio.h>

#define VA_NUM_ARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9,                                       \
                         a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, \
                         A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, XX, ...) XX
#define VA_NUM_ARGS(...)                                                                           \
    VA_NUM_ARGS_IMPL("ignored", ##__VA_ARGS__,                                                     \
                     Z, Y, X, W, V, U, T, S, R, Q, P, O, N, M, L, K, J, I, H, G, F, E, D, C, B, A, \
                     z, y, x, w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a, \
                     9, 8, 7, 6, 5, 4, 3, 2, 1, 0)

#define __CONNECT2(a, b) a##b
#define CONNECT2(a, b) __CONNECT2(a, b)

#define DISPATCH(prefix, ...) \
    CONNECT2(prefix, VA_NUM_ARGS(__VA_ARGS__))

void func_0()
{
    puts(__func__);
}
void func_1(int)
{
    puts(__func__);
}
void func_2(int, int)
{
    puts(__func__);
}
void func_3(int, int, int)
{
    puts(__func__);
}
// more func_N ...
#define func(...) DISPATCH(func_, __VA_ARGS__)(__VA_ARGS__)

int main(int argc, char const *argv[])
{
    func();
    func(1);
    func(1, 2);
    func(1, 2, 3);
    return 0;
}

标签:__,VA,int,ARGS,默认,参数,func,可变,define
From: https://www.cnblogs.com/sfdevs/p/17368840.html

相关文章

  • docker 修改默认存储路径
    默认情况下,docker镜像的默认存储路径是/var/lib/docker,这相当于直接挂载系统目录下,而一般在搭系统时,这个区都不会太大,所以如果长期使用docker开发应用,就需要把默认的路径更改到需要路径下或外挂存储docker镜像的默认路径dockerinfoDockerRootDir:/var/lib/docke......
  • Docker 修改容器运行参数
    修改docker容器的挂载路径原来指令-v/opt/jenkins:/var/jenkins_home期望指令-v/opt/jenkins:/var/jenkins_home-v/opt/data:/opt/data场景:原来容器中的-v参数需要增加停止所有docker容器sudodockerstop$(dockerps-a|awk'{print$1}'|tail-n+2)......
  • Gogs 推送 URL 被解析到默认禁用的本地网络地址(Payload URL resolved to a local netw
    原帖地址:https://blog.51cto.com/u_1472521/5981347问题配置Web钩子使用本地URL出现错误。  解决方法修改​​app.ini​​​配置文件,添加参数​​LOCAL_NETWORK_ALLOWLIST​​后重启服务。如果是多个用逗号分开,例如:LOCAL_NETWORK_ALLOWLIST=drone,192.168.20.1......
  • dlopen参数flag的使用
    参考:https://blog.csdn.net/Bluenapa/article/details/119205993使用dlopen接口动态加载共享库,函数原型如下void*dlopen(constchar*pathname,intmode)其第一个参数是包含so名称的路径,可以是相对路径;第二个参数mode是选项配置,可以结合实际场景需求配置,接下来认......
  • upstream指令参数
    max_conns限制每台server的连接数,用于保护避免过载起限流作用测试参考配置如下:#worker进程设置1个,便于测试观察成功的连接数worker_process1;upstreamtomcats{server192.168.206.129:8080max_conns=2;server192.168.206.130:8080max_conns=2;......
  • C# 调用 C dll char* callback 设置回调函数不定参数
    1:C#调用返回字符串C++nativedll函数的注意事项:a:C++DLL的返回值,安全的做法是分配一个全局char数组,把要返回的char*复制到这个char数组中, charbuff[255];constchar*__stdcallReturnString(){strcpy(buff,"xxxxxxxxxxxxxxx");returnbuff;}......
  • 推翻OpenAI结论,DeepMind重新定义预训练的参数和规模关系!
    文|王思若前言从20年开始,“最大语言模型”的桂冠被各大研究机构和科技公司竞相追逐,堆砌参数,猛上算力,开启了“大炼丹”时代,模型参数量仿佛越大越好,甚至GPT-4模型参数量将超过100万亿的传闻甚嚣尘上。当把视角落在今年下半年,大模型的“军备竞赛”似乎戛然而止,22年4月,Google发布了5400......
  • 如何修改linux中HTTP默认目录
    在Linux中,HTTP服务器的默认目录通常是/var/www/html。要修改它,可以按照以下步骤进行操作:打开Apache配置文件httpd.conf。该文件通常位于/etc/httpd/conf/或/etc/apache2/目录下。找到DocumentRoot指令,并将其值更改为您想要的目录路径。例如,如果您想将默认目录更改为/home/user/......
  • Django框架——Q查询进阶、ORM查询优化、事务操作、字段类型、字段参数、Ajax、Conten
    Q查询进阶fromdjango.db.modelsimportQq_obj=Q()#1.产生q对象q_obj.connector='or'#默认多个条件的连接是and可以修改为orq_obj.children.append(('pk',1))#2.添加查询条件q_obj.children.append(('price__gt',2000))#支持添加多个res=models.Book.o......
  • sys.argv命令行参数使用
    用户命令行配置参数:代码如下:importsysiflen(sys.argv)<2:print('tip:')print('1.select')print('2.select')print('3.select')else:foriinsys.argv[1:]:print(i)......