调试版本中的内联函数(Visual C ++ 2008)

时间:2011-09-22 14:30:57

标签: c++ visual-c++ inline

我正在使用的游戏引擎在调试版本中速度太慢,无法调试游戏。我想要的一件事是编译器内联小函数(特别是在Vector / Matrix和容器类中)。这可能会或可能不会加快调试构建中的游戏速度。在大量剖析并试图找出瓶颈之前,我想我会首先尝试这个,因为我必须做最小的工作,结果可能很有希望。

那么,有没有办法让Visual C ++编译器在调试版本中内联函数?

4 个答案:

答案 0 :(得分:5)

项目选项 - > C / C ++ - >优化 - >内联函数扩展。将其转为/Ob2。在您的调试配置中执行此操作。

在Release中,其他优化设置暗示了内联函数扩展,因此即使默认情况下所有配置都为设置说“默认”,但行为确实不同。

我认为Debug构建应该具有与release相同的内联扩展行为;没有理由不这样做。

http://msdn.microsoft.com/en-us/library/47238hez.aspx

答案 1 :(得分:1)

你混淆了两个编译器选项。 /O影响优化,包括内联。 /ZI创建用于调试的PDB文件。它们可以独立设置。

但是,克隆“调试”配置可能很有用,并使用/O1/ZI创建“调试优化”配置。

答案 2 :(得分:0)

您可以尝试__forceinline。请务必阅读该页面上的调试版本(关闭/Ob0选项)。

我怀疑这不会改变表现。如果您还没有尝试,那么另一件事就是向发布版本添加符号。它可以很好地调试很多问题。

答案 3 :(得分:-1)

在调试模式下编译项目时,Visual Studio定义

DEBUG

#ifdef DEBUG
  inline void fn() {
#else
  void fn() {
#endif