V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuelang
V2EX  ›  推广

C++中函数如何支持可变参的?

  •  1
     
  •   xuelang · 2024-05-07 14:32:59 +08:00 · 1026 次点击
    这是一个创建于 407 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下面这些问题你答的出来不?

    1. C++ 函数是怎么支持可变参的?
    2. C++ 可变参是如何不断迭代实现的?
    3. 可变参中类型安全是什么意思?
    4. 怎么验证编译器的展开代码?
    5. 可变参在哪些开源库有应用?

    完整见我的个人博客 C++ 函数可变参实现方法的演进


    注意:在 和 ChatGPT 结对,通过提问并验证的方式来学习和总结这里可变参的实现,整体对话可以查 ChatGPT - Variadic Templates in C++

    11 条回复    2024-05-11 11:45:06 +08:00
    jones2000
        1
    jones2000  
       2024-05-07 15:16:38 +08:00
    搞这么复杂干什么呢,指针数组不就完事了。
    func( vector<void*> ) 要多少个参数都行。
    augustheart
        2
    augustheart  
       2024-05-07 15:30:13 +08:00
    建议先理解区分可变参函数和可变参模板
    abelyao
        3
    abelyao  
       2024-05-07 15:45:41 +08:00   ❤️ 1
    @jones2000 @augustheart 人家就是来发广告的,别太认真

    @Livid 这个号最近的文章都带了链接
    Livid
        4
    Livid  
    MOD
       2024-05-07 15:49:17 +08:00
    @abelyao 谢谢。这个主题已经被移动。

    @xuelang

    如果你要搬运链接推广,请发送到 /go/promotions 节点。你的账号上目前会有 -8 的降权。
    xuelang
        5
    xuelang  
    OP
       2024-05-10 17:59:29 +08:00
    @jones2000 指针数组的话,缺了类型安全
    xuelang
        6
    xuelang  
    OP
       2024-05-10 18:00:08 +08:00
    @augustheart 这里应该是用可变参模板实现可变参函数,这样理解可以吧?
    xuelang
        7
    xuelang  
    OP
       2024-05-10 18:01:54 +08:00
    @Livid 其实也不是搬运推广,纯技术交流,只是发在个人博客,不想再复制内容过来。

    不过你觉得搬运推广的话,我也无话可说~
    jones2000
        8
    jones2000  
       2024-05-10 22:25:38 +08:00
    @xuelang 指针是 c++一大特色,也是防御性编程的一个有利的武器。
    xuelang
        9
    xuelang  
    OP
       2024-05-11 09:52:38 +08:00
    防御性编程。。。 是我理解的那个意思吗(故意写的别人很难懂)
    augustheart
        10
    augustheart  
       2024-05-11 11:30:43 +08:00   ❤️ 1
    @xuelang 必须这样说清楚啊。可变参函数是 c 那套东西,从原理到实现都完全不相同
    xuelang
        11
    xuelang  
    OP
       2024-05-11 11:45:06 +08:00
    @augustheart 嗯嗯,确实这样更清晰些。感谢指出
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5282 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:39 · PVG 16:39 · LAX 01:39 · JFK 04:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.