簡単な例の下に、標準的な方法でバラディック引数を使用する c 関数があります。
void func(parameter,...) {
va_list args;
va_start(args, parameter);
//process args
v1 = va_arg(args,sometype);
v2 = va_arg(args,sometype);
...
vn = va_arg(args,sometype);
va_end(args);
}
//call func
func(parameter, p1, p2, ..., pn);
armv7s 以下のすべてのデバイス、および 64 ビット シミュレータを含むすべてのシミュレータで、これは成功し、v1 から vn への変数が p1 から pn に割り当てられますが、これを arm64 で実行すると、可変長リストが逆になっているように見えます ( v1 = pn, v2 = pn-1, ..., vn = p1)
これに対する修正はありますか?それとも、この変更を説明するドキュメントを見逃したのでしょうか?
ありがとう
編集:
この問題の重要な要素について言及するのに失敗しました。非可変関数を一般的な可変関数でスウィズルしようとしていました。
注: 使用されているコンパイラは Apple LLVM 5.0 でした