语法上的...可变参数是什么?

时间:2019-06-17 18:24:32

标签: variadic-functions

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

我浏览了MSVC的包含文件,找到了stdarg.h,vcruntime.h等,但还不满意。

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

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

根据ISO9899:

  

6.5.2.2函数调用

     

约束

     

6函数原型声明符中的省略号引起   参数类型转换在最后声明的参数之后停止。默认参数   促销是在尾随参数上进行的。

我想并不是所有的事情都需要准确地确定下来,但是我很好奇,也许还有更多的技术信息。

1 个答案:

答案 0 :(得分:1)

一个await ctx.logout(); ctx.session = null;

ISO 9899:

  

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