c – cldoc在模板部分特化上崩溃

c – cldoc在模板部分特化上崩溃,第1张

概述这个问题被标记为不清楚我在问什么.为清楚起见,我要求一个解决方法,让这个文档生成器对我的代码库正常工作. (也许将作业分成批处理?这可能与cldocs一起使用吗?也许发出不同的命令行选项?也许我的调用是错误的还是错误的?) 我已经提交了一个针对该项目的错误,您可以在此处找到有关我的环境的一些其他信息(包括位于此处的完整命令行:http://pastebin.com/JxWf9hRB). https 这个问题被标记为不清楚我在问什么.为清楚起见,我要求一个解决方法,让这个文档生成器对我的代码库正常工作. (也许将作业分成批处理?这可能与cldocs一起使用吗?也许发出不同的命令行选项?也许我的调用是错误的还是错误的?)

我已经提交了一个针对该项目的错误,您可以在此处找到有关我的环境的一些其他信息(包括位于此处的完整命令行:http://pastebin.com/JxWf9hRB).

https://github.com/jessevdk/cldoc/issues/73

原始问题:

我正在调查使用cldocs进行自动化文档编制.但是,它在我的代码库上崩溃,出现以下错误:

Traceback (most recent call last):  file "/usr/local/bin/cldoc",line 9,in <module>    load_entry_point('cldoc==1.6','console_scripts','cldoc')()  file "/usr/local/lib/python2.7/site-packages/cldoc/__init__.py",line 57,in run    run_generate(rest)  file "/usr/local/lib/python2.7/site-packages/cldoc/__init__.py",line 27,in run_generate    cmdgenerate.run(args)  file "/usr/local/lib/python2.7/site-packages/cldoc/cmdgenerate.py",line 151,in run    run_generate(t,opts)  file "/usr/local/lib/python2.7/site-packages/cldoc/cmdgenerate.py",line 33,in run_generate    generator.generate(xmlout)  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 55,in generate    Generator.generate(self,outdir)  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/generator.py",line 22,in generate    self.generate_node(node)  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 543,in generate_node    self.generate_page(node)  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 510,in generate_page    elem = self.node_to_xml(node)  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 496,in node_to_xml    chelem = self.node_to_xml(child)  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 485,in node_to_xml    self.call_type_specific(node,elem,'to_xml')  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 465,in call_type_specific    getattr(self,nm)(node,elem)  file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 273,in method_to_xml    if len(node.overrIDe) > 0:  file "/usr/local/lib/python2.7/site-packages/cldoc/nodes/method.py",line 43,in overrIDe    bases = List(self.parent.bases)AttributeError: 'namespace' object has no attribute 'bases'

编辑:

很长一段时间后,我已经把它削减到了一个极小的例子.

template<typename T>struct Foo {  int baz(T const& t) const { }};template<typename T,int N>class bar { };template<typename T,int N>struct Foo<bar<T,N>> {  int baz(bar<T,N> const& a) const;};template<typename T,int N>int Foo<bar<T,N>>::baz(bar<T,N> const& a) const { }

虽然这有效:

template<typename T>struct Foo {  int baz(T const& t) const { }};template<typename T,N> const& a) const { }};
解决方法 首先,cldoc在解析源时依赖于clang,它需要适当的C/C++标志(例如-std = c 11)才能正常运行.

然后,即使使用适当的标志,它也会在某些看起来有效的结构上爆炸.特别是它试图用看似错误的上下文来处理模板类方法定义.特别是Foo< bar< T< T>> :: baz()定义的问题在于,在处理过程中,它的self.parent等于Root或namespace对象(显然没有“bases”属性,并且应该’ t),而不是类或类似对象,其基数用于跟踪特定方法的覆盖列表.

我已经为这个问题准备了一个解决方法,它只是在爆炸时使用self.parent属性“放松” *** 作,并将其作为对问题的评论发布.但肯定不是解决方案.也许正确的解决方案应首先确定是否必须以这种方式处理这种类外的方法定义,可能正确的方法是仅在方法声明中处理覆盖列表.

这是补丁:

diff --git a/cldoc/nodes/method.py b/cldoc/nodes/method.pyindex f910241..3e1208f 100644--- a/cldoc/nodes/method.py+++ b/cldoc/nodes/method.py@@ -40,7 +40,7 @@ class Method(Function):             return self._overrIDe         # Lookup in bases,recursively-        bases = List(self.parent.bases)+        bases = List(getattr(self.parent,"bases",[]))         mname = self.name         self._overrIDe = []
总结

以上是内存溢出为你收集整理的c – cldoc在模板部分特化上崩溃全部内容,希望文章能够帮你解决c – cldoc在模板部分特化上崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1227441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存