gpt4 book ai didi

c++ - 如何使 Visual C++ 9 不发出实际上从未调用过的代码?

转载 作者:太空狗 更新时间:2023-10-29 21:08:48 26 4
gpt4 key购买 nike

我的本​​机 C++ COM 组件使用 ATL。在 DllRegisterServer() 中,我调用了 CComModule::RegisterServer():

STDAPI DllRegisterServer()
{
return _Module.RegisterServer(FALSE); // <<< notice FALSE here
}

FALSE 被传递以指示不注册类型库

ATL 可用作源代码,因此我实际上编译了 CComModule::RegisterServer() 的实现。在调用堆栈的某处有一个 if 语句:

if( doRegisterTypeLibrary ) { //<< FALSE goes here
// do some stuff, then call RegisterTypeLib()
}

编译器看到了上面所有的代码,所以它可以看到实际上 if 条件总是 false,但是当我检查链接器进度消息时,我看到RegisterTypeLib() 的引用仍然存在,因此 if 语句没有被删除。

我能否使 Visual C++ 9 执行更好的静态分析,并实际看到某些代码从未被调用并且不发出该代码?

最佳答案

您是否启用了整个程序优化 [/GL]?这似乎是编译器通常无法自行完成的那种优化。

关于c++ - 如何使 Visual C++ 9 不发出实际上从未调用过的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com