在C ++和Java之间共享定义或枚举

时间:2014-06-12 12:22:16

标签: java c++

开始挖掘java,来自c ++。我从c ++(qt / Android)调用java中的一些函数。我想念一种方法来预定义两种语言之间可共享的标签,避免必须定义它们两次或使用字符串。

这样的东西
  

定义OPERATION_START 0X01

在c中可以在java中编译/读取。

这样的事情是存在的还是你知道实现它的一些技巧?

编辑:这样的事情:

带有

的java文件stuff.java
  

public enum Stuff {              表,Apple,Beach,Eye};

和Cpp +

  

'#define public

     

'#include“stuff.java”

     

'#undef public

那会有用吗? java会像0那样从0枚举,对吧?

2 个答案:

答案 0 :(得分:2)

您需要能够读取其中一个定义并导出另一个定义的内容。 有很多事情可以做到这一点。 我知道的两个是: SWIGprotocol buffers。 SWIG将阅读C ++声明并使用其他语言生成相同的代码。 协议缓冲区将读取一些专有声明并为您需要的所有语言生成代码。

也可能有其他人,我也不知道任何比那些重量轻的东西。顺便说一下,这些也适用于定义要在C ++和Java(以及其他语言)之间传递的更复杂的结构。

答案 1 :(得分:1)

您可以在UML或DSL中为共享定义/枚举建模,并使用代码生成来创建Java和C ++中的匹配定义。

或者你也可以在Java类中定义它们并构建一个生成器,它使用反射从中生成匹配的C ++头文件。