首页 > 解决方案 > 什么是 ... 语法上的可变参数?

问题描述

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

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

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

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

来自 ISO9899:

6.5.2.2 函数调用

约束

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

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

标签: variadic-functions

解决方案


一个punctuator

ISO 9899:

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


推荐阅读