草庐IT

采用者

全部标签

c++ - 如何在 C++ 中查找函数的所有调用者?

我正在用C++重构一些代码,并且我想弃用一些旧方法。我目前查找所有方法的方法如下所示:注释掉我正在工作的源文件中的原始方法。尝试编译代码。如果发现编译器错误,则记下该调用并尝试重新编译。编译成功后,我找到了所有的调用。这完全糟透了。我还尝试使用greppingsource来获取函数调用的名称,但有时我会遇到具有不同参数的同名函数的问题,因此我的编译使C++编译器为我解析名称。我找到了thisquestion对于C#,但我的代码库完全用C++实现。有没有更好的方法在C++中找到类方法或函数的所有调用者?我在Unix系统上使用GCC,但跨平台解决方案将是最高级的。

c++ - 是否存在阻止采用D范围的C++语言障碍?

这是一个C++/D交叉问题。与Dprogramminglanguage之类的C++库相比,ranges具有Boost.Range而不基于迭代器对。官方C++RangesStudyGroup似乎在制定技术规范时陷入了困境。问题:当前的C++11或即将发布的C++14标准是否有阻碍采用D范围以及的适当范围版本的任何障碍?我不十分了解D或其范围,但它们似乎很懒惰且可组合,并且能够提供STL算法的超集。鉴于他们声称D会取得成功,因此拥有C++库似乎很不错。我想知道D的独特功能(例如,字符串混合,统一函数调用语法)对于实现其范围是多么重要,以及C++是否可以在不花费太多精力的情况下模仿它(例如,

c++ - 在特定类型元素的任何容器上采用 STL 迭代器的函数

我将如何定义一个函数,该函数将任何类型的STL容器上的迭代器作为输入,但仅限于特定模板类型的那些。例如:std::list::iterator形式的任何迭代器或std::vector::iterator我只是定义函数来获取std::list::iterator,但如果我们切换到不同的STL容器,我不想更改我的代码。有没有办法通过模板或其他方式做到这一点? 最佳答案 您可以使用SFINAE构造如boost::enable_if它验证嵌套的typedefiterator::value_type是否确实是适当的类型。templatetyp

c++ - 为什么后缀增量运算符采用虚拟参数?

看看这些函数签名:classNumber{public:Number&operator++();//prefix++Numberoperator++(int);//postfix++};前缀不带任何参数,但后缀可以。为什么?我认为我们可以通过不同的返回类型来识别它们。 最佳答案 前缀和后缀++是不同的运算符。使用标准的Foooperatorsymbol(Foo&)样式声明,没有明显的方法可以区分两者。与其想出一些像Foosymboloperator(Foo&)这样的新语法,这会使其成为一种与所有其他运算符不同的特殊情况,并且可能有点

c++ - 将调用者 __FILE__ __LINE__ 传递给函数而不使用宏

我已经习惯了:classDb{_Commit(char*file,intline){Log("Commitcalledfrom%s:%d",file,line);}};#defineCommit()_Commit(__FILE__,__LINE__)但最大的问题是我在全局范围内重新定义了Commit这个词,而在400k行的应用程序框架中这是一个问题。而且我不想使用像DbCommit这样的特定词:我不喜欢像db->DbCommit()这样的冗余,或者在任何地方手动传递值:db->Commit(__FILE__,__LINE__)最差。那么,有什么建议吗? 最佳

python - 如何在python中获取调用者的文件名、方法名

例如,a.boo方法调用b.foo方法。在b.foo方法中,如何获取a的文件名(我不想将__file__传递给b.foo方法)。.. 最佳答案 您可以使用inspect模块来实现:frame=inspect.stack()[1]module=inspect.getmodule(frame[0])filename=module.__file__ 关于python-如何在python中获取调用者的文件名、方法名,我们在StackOverflow上找到一个类似的问题:

python - 如何在python中另一个类的函数中获取调用者类名?

我的目标是为此创建一个应用程序的序列图,我需要在运行时获取有关调用者和被调用者类名的信息。我可以成功检索到调用者函数但无法获取调用者类名?#Scenariocaller.py:importinspectclassA:defApple(self):print"Hello"b=B()b.Bad()classB:defBad(self):print"dude"printinspect.stack()a=A()a.Apple()当我打印堆栈时,没有关于调用者类的信息。那么是否可以在运行时检索调用者类? 最佳答案 好吧,在对提示进行了一些挖掘

python - 如何使用inspect从Python中的被调用者那里获取调用者的信息?

我需要从被调用者那里获取调用者信息(什么文件/什么行)。我了解到我可以为此目的使用inpect模块,但不完全是。如何通过检查获取这些信息?或者有没有其他方法可以获取信息?importinspectprint__file__c=inspect.currentframe()printc.f_linenodefhello():printinspect.stack??whatfilecalledmeinwhatline?hello() 最佳答案 调用者的帧比当前帧高一帧。您可以使用inspect.currentframe().f_back找

python - 在 Python 中的另一个函数中获取调用者函数名称?

这个问题在这里已经有了答案:Howtogetthecaller'smethodnameinthecalledmethod?(11个回答)关闭3年前。如果您有2个功能,例如:defAdefBA调用B,你能知道B里面谁在调用B吗,比如:defA():B()defB():this.caller.name 最佳答案 您可以使用inspect模块来获取你想要的信息。其stack方法返回帧记录列表。对于Python2,每个帧记录都是一个列表。每条记录中的第三个元素是调用者姓名。你想要的是这样的:>>>importinspect>>>deff()

java - 如何采用 TDD 并确保遵守?

我是一名高级工程师,在一个由其他四人组成的团队中工作驱动大型美国职业体育网站的内容管理应用程序地点。我们两年前就开始了这个项目,并选择了Java作为我们的平台,虽然我的问题不是Java特定的。自从我们开始了,我们的队伍出现了一些流失。我们每个人都有在决定实现方面有很大的自由度细节,尽管重要的决定是通过共识做出的。我们的项目是一个相对年轻的项目,但我们已经到了一定程度当没有一个开发人员知道有关该应用程序的所有信息时。首要的原因是我们的发展速度很快,其中大部分发生在我们运动的赛季揭幕战前的紧缩中;和事实上,我们的测试覆盖率基本上是0。我们都了解TDD的理论优势并同意该方法将改善我们的生活和