gpt4 book ai didi

c++ - 是否可以在 VS2008 中的预处理器指令 block (如 #ifndef ... #endif)中启用智能感知

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:58 25 4
gpt4 key购买 nike

在 C++ 库中工作时,我注意到在诸如“#ifndef CLIENT_DLL ... #endif”之类的指令 block 中时,我没有获得任何智能感知。这显然是因为定义了“CLIENT_DLL”。我意识到我可以通过简单地注释掉指令来解决这个问题。

是否有任何智能感知选项可以在不考虑指令评估的情况下启用智能感知?

最佳答案

得到你想要的,你会失去很多。

Visual C++ IntelliSense 基于几个主要假设1. 你想要好的/可用的结果。2. 您当前的 IntelliSense compiland 将显示与您当前所在的“配置”相关的信息。

因为您当前的配置具有该预处理器指令,您将无法从#ifndef 区域获得结果。

如果你想通了,这个原因是有道理的。如果 IntelliSense 编译器只是尝试编译您所在的区域,而不考虑 #ifdef 区域怎么办?你会得到无意义的和不可编译的代码。它无法对您的编译进行正面或反面的分析。

我可以想象一个非常复杂的解决方案,它对您所在的区域运行较小的(新的)解析,并且仅假定该区域是编译区的一部分。但是,这种方法存在太多漏洞(就像该区域中没有任何内容被声明/定义一样),这种可能的方法会立即让您感到沮丧,除非是在非常非常简单的场景中。

通常最好避免在#ifdef 区域中使用逻辑,而是将参数化编译的使用委托(delegate)给整个函数,这样编译器的前端总是在编译那些模块,但链接器/优化器会选择稍后更正 OBJ。

希望对你有帮助,将

关于c++ - 是否可以在 VS2008 中的预处理器指令 block (如 #ifndef ... #endif)中启用智能感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515169/

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