【问题标题】:What is ... variadic argument syntactically?什么是 ... 语法上的可变参数?
【发布时间】:2019-06-17 18:24:32
【问题描述】:

C/C++ 编译器认为... 是什么?需要明确的是,我不认为这是一个重复的问题,因为其他 stdarg 问题是关于“什么是可变参数列表/它们如何工作?”这不是我的问题。

我查看了MSVC的include文件,发现了stdarg.h、vcruntime.h等,但还没有让自己满意。

编译器是否将... 视为运算符?链接器符号?宏?它不能是标识符,因为标识符中不允许使用该源字符 (.)。

如果我不得不猜测,我会说这类似于使用 __attribute__ 宏或 inlineregister 编译器“提示”来禁止在调用具有多个参数的函数时出现警告/错误。

来自 ISO9899:

6.5.2.2 函数调用

约束

6 函数原型声明器中的省略号表示 参数类型转换在最后一个声明的参数之后停止。默认参数 提升是在尾随参数上执行的。

我想并不是所有的事情都需要完全确定,但我很好奇那里是否有更多的技术信息。

【问题讨论】:

    标签: variadic-functions


    【解决方案1】:

    punctuator

    ISO 9899:

    6.4.6 标点符号
    语义
    2  标点符号是具有独立句法和语义意义的符号。根据上下文,它可以指定要执行的操作(这反过来可能会产生一个值或函数指示符,产生副作用或它们的某种组合)在这种情况下,它被称为运算符(其他形式的运算符也在某些情况下存在)。操作数是操作员作用的实体。

    【讨论】:

    • 非常简短的回答,甚至连一句句子都没有。请多解释一下!
    猜你喜欢
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2015-03-01
    • 2011-12-19
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多