【发布时间】:2019-06-17 18:24:32
【问题描述】:
C/C++ 编译器认为... 是什么?需要明确的是,我不认为这是一个重复的问题,因为其他 stdarg 问题是关于“什么是可变参数列表/它们如何工作?”这不是我的问题。
我查看了MSVC的include文件,发现了stdarg.h、vcruntime.h等,但还没有让自己满意。
编译器是否将... 视为运算符?链接器符号?宏?它不能是标识符,因为标识符中不允许使用该源字符 (.)。
如果我不得不猜测,我会说这类似于使用 __attribute__ 宏或 inline 或 register 编译器“提示”来禁止在调用具有多个参数的函数时出现警告/错误。
来自 ISO9899:
6.5.2.2 函数调用
约束
6 函数原型声明器中的省略号表示 参数类型转换在最后一个声明的参数之后停止。默认参数 提升是在尾随参数上执行的。
我想并不是所有的事情都需要完全确定,但我很好奇那里是否有更多的技术信息。
【问题讨论】: