在公共对象文件中分隔调用者

时间:2014-11-21 09:48:21

标签: c++ c linker runtime

我正在开发一个包含解码器和编码器的应用程序,层次结构如下:

debug_info.h包含在编码器和解码器中。编译后,可根据用例执行编码器或解码器。 我想在debug_info.h中将调用者分开,这意味着在运行时我可以分离编码器是在调用它还是解码器。

我的方法:

我在解码器和编码器生成文件中启用了单独的标志(dec_enable和enc_enable)。

我对它们进行了检查debug_info.h

#ifdef dec_enable
//---Do Something--
#else
//--Do Something else

这不起作用。实际上它不应该是因为在运行时我们才会知道哪些是被执行的。

请告诉我如何在运行时区分这两者。

1 个答案:

答案 0 :(得分:0)

除非您实际上正在制作调试器,否则您的程序设计似乎很奇怪。为什么程序中的任何算法都依赖于某种调试文件,这可能不会包含在生产代码中?这只是一种奇怪的,紧密的耦合,不应该存在。

您应该设计程序,以便编码器/解码器算法除了指定的任务之外什么都不知道。然后,您的调试文件包含编码器/解码器。

如果需要更改在运行时调用的函数,只需编写一个简单的if-else语句。或者如果由于某种原因需要代码更通用,您可以使用函数指针,即使在这种情况下似乎没有明显需要。