在我搜索Geant4源代码的过程中,我多次注意到有一些方法是在头文件中声明的,但从未使用任何相关的代码进行定义(请原谅我的行话中的错误(我是一名工程师))。
例如,定义如下的方法:
G4TrackVector* GetfSecondary();它在头文件或源文件中没有实现,不是虚拟的,但是它在各种场合被程序使用,并且程序从这个编译的代码运行。起初,我认为这只是doxygen的一些很酷的代码隐藏技巧,但现在我发现它不是!这在代码中很常见。
有人能解释一下发生了什么事吗?
谢谢
发布于 2011-06-06 00:24:40
GetSecondary()函数是G4Step类(在G4Step.hh中定义)的成员,并在G4Step.icc中以内联方式实现。G4Step.hh的末尾包含了G4Step.icc。
我猜您是在源代码目录中查找实现,而不是在include目录中查找,但是include目录是内联实现的合适位置。
将来,如果您使用*nix,您可以尝试从项目目录的顶部使用grep -r <FunctionName> .来查找所有提到的函数,其中应该包括实现。
发布于 2011-06-06 00:17:47
如果是这种情况,代码将无法编译。你只是没有在正确的地方寻找它的定义。或者只是没有注意到它。调用未定义的已声明函数是错误的。
https://stackoverflow.com/questions/6244084
复制相似问题