为什么 llvm::FunctionType(Type*, bool) 如果根据定义它不带参数,那么它有 bool ?
Why llvm::FunctionType(Type*, bool) has bool if by definition it doesn't take parameters?
FunctionType *FunctionType::get
的一个定义是:
FunctionType *FunctionType::get(Type *Result, bool isVarArg)
Create a FunctionType
taking no parameters.
如果类型没有参数,我们什么时候使用bool isVarArg
参数来表示参数个数是可变的?
原因是 LLVM 对待可变参数的方式与 fixed/positional 参数不同。没有 fixed 参数(会出现在 ArrayRef<Type *> llvm::FunctionType::params () const
中的那种)是文档中 "no parameters" 的意思,因此可变参数是豁免的。
如果您查看 getNumParams()
的注释,它会显示:
Return the number of fixed parameters this function type requires. This does not consider varargs.
FunctionType *FunctionType::get
的一个定义是:
FunctionType *FunctionType::get(Type *Result, bool isVarArg)
Create a
FunctionType
taking no parameters.
如果类型没有参数,我们什么时候使用bool isVarArg
参数来表示参数个数是可变的?
原因是 LLVM 对待可变参数的方式与 fixed/positional 参数不同。没有 fixed 参数(会出现在 ArrayRef<Type *> llvm::FunctionType::params () const
中的那种)是文档中 "no parameters" 的意思,因此可变参数是豁免的。
如果您查看 getNumParams()
的注释,它会显示:
Return the number of fixed parameters this function type requires. This does not consider varargs.