2011-06-05 63 views
2

期间通过GEANT4源代码,我的搜索没有定义过,我已经注意到了几次,有哪些是在头部声明但从未与任何相关的代码中定义的方法(请原谅任何错谬在我的行话(我是一名工程师))。方法声明,但在GEANT4源代码

一个例子是一个方法定义如下:

G4TrackVector* GetfSecondary(); 

其具有在报头或源文件中没有实现中,不是虚拟的,但它是由程序和该程序中使用的各种场合从此编译的代码运行。起初,我认为这只是一个很酷的代码与doxygen隐藏技巧,但我现在看到它不是!这在代码中很常见。

有人能解释这是怎么回事?

谢谢

+0

@ user487100因为您的帐户没有问这个问题,有不到50点,你不能评论。如果'Johnny'是您的另一个帐户,请使用这些凭据登录,您将能够发表评论。另外,提出好的问题,并给出很好的答案,你就可以到处发表评论;) – phihag 2011-06-05 17:07:57

回答

0

如果是这种情况,代码将无法编译。你只是没有在正确的地方寻找它的定义。或者只是没有注意到它。调用没有定义的声明函数出错。

+1

从技术上讲,这将编译好的,但未能联系起来。 – ildjarn 2011-06-05 16:53:31

1

GetSecondary()函数是G4Step类(在G4Step.hh定义)的成员,并在G4Step.icc直列实现。 G4Step.icc包含在G4Step.hh的末尾。

我猜你正在寻找的源目录,而不是用于实施包括目录,但包括dir是直列实施propper地方。

将来,如果您使用的是* nix,您可以尝试从项目目录顶部的grep -r <FunctionName> .查找所有提及的函数,其中应包括实现。