在我搜索Geant4源代码的过程中,我注意到有几次方法在标题中声明但从未使用任何相关代码定义(请原谅我的术语中的任何错误(我是工程师))
一个例子是定义如下的方法:
G4TrackVector* GetfSecondary();
在头文件或源文件中没有实现,不是虚拟的,但它在程序的各种场合下使用,程序从这个编译的代码运行。起初我以为这只是一些很酷的代码隐藏技巧与doxygen,但我现在看到它不是!这在代码中很常见。
有人可以解释发生了什么吗?
由于
答案 0 :(得分:1)
GetSecondary()
函数是G4Step类的成员(在G4Step.hh中定义),并在G4Step.icc中内联实现。 G4Step.icc包含在G4Step.hh的末尾。
我猜你是在查看源目录而不是实现的include目录,但include dir是内联实现的适当位置。
将来,如果您使用的是* nix,可以尝试从项目目录顶部的grep -r <FunctionName> .
查找函数的所有提及,其中应包括实现。
答案 1 :(得分:0)
如果是这种情况,代码将无法编译。你只是没有找到合适的位置来定义它。或者只是没有注意到它。调用没有定义的声明函数是错误。