Tag: reflection

在C中运行时获取变量的类型

我可以在C中获取程序变量’在运行时在特定内存段中存在的类型。 C无法识别错误: int k=5; float s= 3.4; k=s; printf(“%d”, k); 我试图在运行时更改变量的类型。

C / C ++ Reflection和JNI – 一种调用尚未编写的本机代码的方法

我正在实现一个Java软件,希望允许C库作为插件。 为了调用这些未来的函数,我需要以某种方式在Java中创建一个本机函数,我可以从中调用尚不存在的代码。 方法签名将是静态的,但方法和类名称可能会更改。 有没有办法检查加载的库或可用的function? 我希望它的工作方式如下: 在我的Java类中,我会有一个函数; public static native void thirdParty(String class, String method, int[] data, int[] params); 哪个会在我的C库中调用一个函数; JNIEXPORT void JNICALL Java_com_ex_app_Native_thirdParty(JNIEnv *, jclass, jstring, jstring, jintArray, jintArray); 我可以从中获取类和方法名称,如果它们存在则调用它们,如果它们不存在则抛出exception。 我想我正在寻找的是某种Java风格的reflection,但是在C语言中或者在C ++中失败了。 我怎样才能做到这一点?

将C结构映射到XML元素

假设我有一个C或C ++结构,例如: struct ConfigurableElement { int ID; char* strName; long prop1; long prop2; … }; 我想将其加载/保存到以下XML元素: 这种映射可以简单地用Java / C#或任何其他语言完成,并且具有运行时reflection。 是否可以使用宏/模板技巧在C ++中以任何非繁琐的方式完成? 处理嵌套结构/联合的加分点。

从参数创建变量名称

是否可以使用名称中的参数创建变量列表? 像这样的东西: for(n=0; n< val; n++) int var'n'=0;

获取C结构成员列表

是否可以将结构成员列表作为char ** ? 例如,像这样: struct mystruct { int x; float y; char *z; }; /* … */ char **members = MAGIC(struct mystruct); /* {“x”, “y”, “z”, NULL}. */ 我也对编译器相关的方法感兴趣。 有这样的事吗? 感谢您的时间。