Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用相同代码生成两种语言的文档_C_Vb6_Swig_Doxygen_Python Sphinx - Fatal编程技术网

C 使用相同代码生成两种语言的文档

C 使用相同代码生成两种语言的文档,c,vb6,swig,doxygen,python-sphinx,C,Vb6,Swig,Doxygen,Python Sphinx,我可以用相同的代码为两种不同的语言生成文档吗?问题是,我有一个C API,它也通过类似于VB的专有语言公开 因此,C中公开的函数类似于: int Function (*PointerToObject) int Function (ByVal long PointerToObject) 在VB中,它将类似于: int Function (*PointerToObject) int Function (ByVal long PointerToObject) 我以前就已经开始讨论这个问题了,但

我可以用相同的代码为两种不同的语言生成文档吗?问题是,我有一个C API,它也通过类似于VB的专有语言公开

因此,C中公开的函数类似于:

int Function (*PointerToObject)
int Function (ByVal long PointerToObject)
在VB中,它将类似于:

int Function (*PointerToObject)
int Function (ByVal long PointerToObject)
我以前就已经开始讨论这个问题了,但那个时候我对强氧一无所知。最近几天我一直在阅读文档,显然它可以为VB创建文档,但我必须有实际的VB代码才能让它工作,而我没有。我唯一拥有的是原始的C和同样在C中的swig输出

我想到的是一些工具(doxygen,sphinx,…),它可以让我从单一来源创建某种多语言文档(不是有效的doxygen,但解释了这个想法):

如果我能以某种方式将它集成到swig中,那就太好了,因为swig可以识别正确的VB类型,但我想我可能要求太多了


这有点复杂,如果我不够清楚,请留下评论,我会尝试进一步解释。

我不确定这会有多有用,因为我没有准确地完成您要找的内容(这有点混乱),但在类似的情况下,我得出的结论是,我们最好的办法是生成一个绒毛对象,只让doxygen记录

在我们的例子中,我们有一个LDMud,它有几百个驱动程序发布的外部函数,这些函数在LPC语言中是不存在的,其余的MUD都是用这些函数编写的。我们可以在它的原生C代码中将其解析为一个单独的文档运行,并将文档与我们的主文档一起运行。在我们的例子中,我们有相当完整的纯文本文档,包括我们应该考虑这些函数的定义,所以我们使用这个文档来生成具有哑函数定义的对象,并将明文文档解析成DoXyGy风格的函数头注释。这显然没有为我们提供在文档中包含代码或代码注释的优势,但它确实允许我们以多种形式生成文档,在指南中推送文档,从其他文档中引用这些函数,等等

我不太熟悉C,所以我不确定是否有任何内省支持来执行所需函数的编程清单,并根据这些信息生成虚拟声明。如果您没有,并且有少量的函数,我想这将是您最好的时间投资,简单地手工编写虚拟声明。如果您有大量这样的函数,那么使用doxygen将原始代码解析为XML文档并从XML生成虚拟对象可能是值得的。Doxygen的XML可能很难处理,但如果您真正需要的只是声明和参数,那么它(相对)就很简单

最后,如果您的文档确实可以被看作是内部和外部的,那么您可能还希望使用两个或多个配置文件来生成保存到不同位置的不同文档集,并将它们分别发布给内部/外部受众。这将使为每个人提供适当数量的细节的任务不那么令人沮丧。沿着这些路线,您可能还会发现选项和/命令很有用