gpt4 book ai didi

python - 如何使 C 枚举类型可用于其他语言?

转载 作者:搜寻专家 更新时间:2023-10-31 01:46:09 29 4
gpt4 key购买 nike

我目前正在编写一个 C/C++ 程序,它使用头文件中的一堆 enum,例如

typedef enum
{
POINT,
LINE,
AREA,
VOLUME
} domainType;

我的程序与各种其他语言(F77、F90、Python 等)交互,我希望这些枚举类型在 C/C++ 头文件中定义一次,并在其他语言中也使用它们。我想避免为我正在使用的每种语言定义相同的“enum”类型(它们在其他语言中可能有不同的称呼......)因为这很容易出错任务。有什么优雅的方法吗?

最佳答案

假设在所有语言中,您将它们定义为逗号分隔列表,您可以这样做:

ENUMS.txt

 POINT,
LINE,
AREA,
VOLUME

Myfile.h

typedef enum
{
#include "ENUMS.txt"
} domainType;

在 C/C++ 中这会起作用。但是我不知道您的其他语言是否具有类似 C/C++ 中的 include 的功能。如果是,那么您可以通过这种方式进行。

我很确定这在 Java 中是行不通的。

否则你只能在一些配置文件中定义它们并通过函数映射它们,但它们将不再是枚举。如果您只有这个示例,那么可能不值得付出努力,但如果您有数百个这样的名字,那么它可能是值得的。

更新

考虑到这一点后,可能会有一些其他方法,这会有点工作,但可能会有用。对于像我上面显示的那样支持包含的语言,这种方法很好。对于其他语言,如 Java、Python 等,您可以编写一个简单的脚本来生成有效的源文件。我正在为 java 做一些类似的事情,根据从数据库中读取的定义将数据库记录生成为类。如果您必须支持多种语言,和/或经常修改枚举,这可能会有用,因为您仍然需要维护一个源。

关于python - 如何使 C 枚举类型可用于其他语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045236/

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