跳轉到主要內容
FFIType 提供函數定義中使用的類型常量。

常量表

常量編碼ArkTS 類型C 類型
FFIType.char / int8_t / i8cnumberchar / int8_t
FFIType.uint8_t / u8inumberuint8_t
FFIType.int16_t / i16inumberint16_t
FFIType.uint16_t / u16inumberuint16_t
FFIType.int32 / i32 / int / uint32_t / u32inumberint32_t
FFIType.int64 / i64 / int64_t / uint64_t / u64lnumberint64_t / uint64_t
FFIType.double / f64dnumberdouble
FFIType.float / f32fnumberfloat
FFIType.boolbnumberbool
FFIType.CStringsstringconst char*
FFIType.ptr / pointer / function / bufferpnumbervoid*
FFIType.callbackkJSCallbackint32_t (*)(int32_t)(函數指針)
FFIType.usizelnumbersize_t / uintptr_t

用法

import { FFIType } from 'arkffi';

const def = {
  args: [FFIType.int32, FFIType.double, FFIType.CString],
  returns: FFIType.double,
};

// 也可使用字符串字面量(等價的簡寫形式)
// args: ['i', 'd', 's']
// returns: 'd'

ARM64 寄存器映射

C 類型ArkTS 類型寄存器
int32_t, bool, charnumberx0-x7
int64_t, uint64_t, void*numberx0-x7
float, doublenumberv0-v7
const char*stringx0-x7(指針)