当前位置: 首页 > news >正文

android NDK 的 -> 是什么意思

-> 是什么意思????

在 C++ 中,env->CallVoidMethod() 中的 -> 是 成员访问运算符(也称为箭头运算符),它用于通过指针访问对象的成员函数或成员变量。

-> 的含义

  • env 是一个 指针(指向 JNIEnv 结构体或类)。

  • -> 用于通过指针访问其指向对象的成员(类似于 . 运算符,但 . 用于直接访问对象的成员,而 -> 用于指针)。

  • // 假设有一个结构体/类 JNIEnv
    struct JNIEnv {void CallVoidMethod(...);
    };// 情况1:env 是对象(直接使用 . 访问成员)
    JNIEnv env;
    env.CallVoidMethod(...);// 情况2:env 是指针(使用 -> 访问成员)
    JNIEnv* env = ...;
    env->CallVoidMethod(...);

 为什么 JNI 里用 ->

在 JNI 中:

  • JNIEnv 实际上是一个 指向函数表的指针(在 C++ 中,它被封装成一个类,但仍然是指针)。

  • 因此,必须使用 -> 访问它的方法(如 CallVoidMethod)。

  • ​​​​​​​

 C 语言 vs C++ 的 JNIEnv 调用方式

  • C++ 风格env->CallVoidMethod()):

    cpp文件:

    env->CallVoidMethod(obj, methodID, ...);
  • C 风格(*env)->CallVoidMethod(env, ...)):

    c文件:

    (*env)->CallVoidMethod(env, obj, methodID, ...);
    ​​​​​​​

在 C 中,JNIEnv 是一个 指向函数表指针的指针,所以需要先解引用 (*env),再用 -> 访问方法。

并且,env 必须作为第一个参数传入(因为 C 没有隐含的 this 指针)。

总结

情况示例说明
C++ JNIenv->CallVoidMethod(...)env 是指向 JNIEnv 的指针,直接用 -> 访问方法
C JNI(*env)->CallVoidMethod(env, ...)env 是指向指针的指针,先解引用 (*env),再用 -> 访问方法

在 Android NDK 开发中,通常使用 C++ 风格的调用(env->XXX),因为代码更简洁。

http://www.xdnf.cn/news/789949.html

相关文章:

  • LRC and VIP
  • mac环境下的python、pycharm和pip安装使用
  • C++核心编程_ 函数调用运算符重载
  • PPO: Proximal Policy Optimization Algorithms
  • 全面解析 Windows CE 定制流程:从内核到设备部署
  • 基于MATLAB的FTN调制和硬判决的实现
  • 手把手教你用Appsmith打造企业级低代码平台:从部署到性能调优实战
  • PPO和GRPO算法
  • 大模型的外围关键技术
  • 【面试】音视频面试
  • 亮数据网页解锁器:让数据触手探索亮数据解锁工具:打破网页数据采集的局限
  • GPIO的内部结构与功能解析
  • Spring Boot Actuator未授权访问漏洞修复
  • RS232/RS485 光电隔离转换器DAM-3210A
  • 学习STC51单片机26(芯片为STC89C52RCRC)
  • Python训练营打卡Day42
  • Java-IO流之字节输入流详解
  • Spring AOP 和 AspectJ 有什么区别
  • Unity ARPG战斗系统 _ RootMotion相关知识点
  • 如何构建自适应架构的镜像
  • Diffusion Models: A Comprehensive Survey of Methods and Applications
  • 网络攻防技术七:计算机木马
  • Java高级 | 【实验二】控制器类+相关注解知识
  • InternLM2/LM2.5/ViT/VL1.5/VL2.0笔记: 核心点解析
  • 服装产品属性描述数据集(19197条),AI智能体知识库收集~
  • ULVAC DC-10-4P 400V input 10kW DC Pulse power supply 爱发科直流电源
  • ESOP股权管理平台完整解决方案
  • 基于LLaMA-Factory和Easy Dataset的Qwen3微调实战:从数据准备到LoRA微调推理评估的全流程指南
  • 开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)
  • CDGP|数据治理:实现数据“可用不可见”“流通不流失”