标签: c gcc centos
警告:第一个arg在寄存器中, stdarg.h无法取其地址
为什么第一个参数将存储在寄存器中?
答案 0 :(得分:2)
一些调用约定(例如fastcall)传递寄存器中的前几个参数,而不是将它们放在堆栈中。但是,这使得获取这些变量的地址变得不可能,并且大多数可变函数的实现依赖于此。因此,编译器可能另外将参数放在堆栈上以及寄存器中,或者对可变参数函数使用不同的调用约定。