gpt4 book ai didi

java - Android 中 Java 和 NDK (JNI) 之间的共享静态变量访问

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:39 25 4
gpt4 key购买 nike

出于数学原因,我在我的应用程序中使用了一些静态常量(这些参数只能由开发人员而不是用户进行调整)。

在 NDK 方面,我有一个包含所有这些常量值的头文件 (.h)。同样,在 Java 方面,我有一个跟踪相同变量(复制)的类。

是否有一个地方(一个文件)可以存储这些常量以供 Java 和 C++ 使用?也许是像 XML 文件这样的东西,所以开发人员只需要调整那里的常量?

如果是这样,我应该如何正确实现它(get)。

最佳答案

请格外小心地使用下面的解决方法,但它可能会为您节省一些开发工作。

从一个简单的 Java 类开始:

package com.example.hellojni;

public class Settings {
public final static int ANSWER = 42;
}

这是UseSettings.h:

#pragma once
#define package struct { struct { bool hellojni; } example; } com = {{true}}; static bool com_example_hellojni_Settings =
#define public
#define final const
#define class struct
#include "../java/com/example/hellojni/Settings.java"
;
#undef class
#undef final
#undef public
#undef package

现在你可以在你的 C++ 文件中写类似的东西了

#include "UseSettings.h"
int answer = Settings::ANSWER;

这个解决方案可能会被调整以适用于 C99,但我没有为此付出足够的努力。

更新:

类似的方法可以应用于简单的枚举:

package com.example.hellojni;

public enum Test {
test1,
test2,
test3
}

#define public
#define package static struct { struct { bool hellojni; } example;} com {true}; static bool com_example_hellojni_Test =

#include "…/Test.java"

#undef public
#undef package

关于java - Android 中 Java 和 NDK (JNI) 之间的共享静态变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com