开始挖掘java,来自c++。我从c++ (qt/Android)调用java中的一些函数。我错过了一种方法来预定义一些标记之间的两种语言共享避免定义它们两次或使用字符串。
比如
c中的define OPERATION_START 0X01
在java中可编译/可读。
这样的东西存在吗?或者你知道一些实现它的技巧吗?
编辑:这样怎么样:
java文件stuff.java with
公共enum Stuff{Table, Apple, Beach, Eye};
和
# define公众
"stuff.java"' # include
# undef公众
可以吗?Java会像c一样从0开始枚举,对吧?
您需要能够读取其中一个定义并导出另一个定义的东西。有很多东西可以做到这一点。我知道的两个是:SWIG和协议缓冲区。SWIG将读取c++声明,并用其他语言生成相同内容的代码。协议缓冲区将读取一些专有声明,并为您需要的所有语言生成代码。
可能还有其他的,我不知道有什么比它们更轻的了。顺便说一句,对于定义在c++和java(以及其他语言)之间传递的更复杂的结构,它们也很有用。
您可以在UML或DSL中对共享定义/枚举进行建模,并从那里使用代码生成来创建Java和c++中的匹配定义。
或者您也可以在Java类中定义它们,并构建一个生成器,该生成器使用反射从中生成匹配的c++头文件。