【问题标题】:IntelliSense in Visual Studio 2019 with CMake Project and IAR CompilerVisual Studio 2019 中的 IntelliSense 与 CMake 项目和 IAR 编译器
【发布时间】:2021-01-16 02:33:23
【问题描述】:

所以我有一个 CMake 项目,我在 Visual Studio 2019 中使用“打开文件夹”选项打开它。从这里我可以构建和编译它而不会出现任何错误(CMake 正在使用工具链文件中指定的 IAR 编译器(iccarm.exe))。到目前为止,一切都很好。 问题在于,尽管 IntelliSense 找到了所有必要的头文件,但仍显示许多主要与“未定义的 __INTxx_T_TYPE__”相关的错误。

据我所知,双下划线表示它是编译器内部数据类型,未在任何头文件中定义,这也可以解释为什么 IntelliSense 报告它未定义(即使编译器知道该类型)。我想为了解决这个问题,IntelliSense 确实支持不同的模式,如“windows-msvc-x86”或“linux-gcc-arm”。但是IAR编译器没有选项。

所以我的问题是:如何让 IntelliSense 在这个项目中运行?有没有办法为 IAR 编译器添加自定义 IntelliSense 模式?我可以只为定义了缺失类型的 IntelliSense 添加头文件吗?有没有办法告诉 IntelliSense 不要担心这些类型/忽略这些类型?

【问题讨论】:

  • 它只理解 microsoft 和 mingw 的内部结构。我认为它不会知道 IAR 内部类型。
  • 在 IntelliSense 处理时定义了 __INTELLISENSE__ 参见 docs.microsoft.com/en-us/cpp/preprocessor/… 您可以尝试添加一些条件符号来关闭一些最烦人的错误。

标签: c++ c cmake intellisense iar


【解决方案1】:

好吧,只是在不太可能的情况下有人遇到同样的问题,这是我的“解决方案”(有点):

  1. 我创建了一个包含 IAR 使用的所有内部类型的头文件,并将其命名为“intellisenseHeader.h”。你可以在这里找到内部结构 (https://www.gaio.co.jp/support/user/faq/winams/docs/sample_predef.pdf),但就我而言,我必须自己添加一些定义。现在的问题是,它不再编译了,因为 IAR 编译器现在找到了 2 个定义(内部定义和头文件中的一个)。所以我们需要再次解决这个问题:
  2. 我将包含放在 #ifdef USE_INTELLISENSE_HEADER 中。
  3. 我创建了两个 Visual Studio 配置。在第一个中,CMake 将设置预处理器指令并包含 intellisenseHeader 文件。在另一个我没有设置它。

那么这有什么作用呢?如果您在包含标头的配置中,IntelliSense 可以工作,但您无法编译。如果你在另一个你可以编译,但 IntelliSense 不再工作了。所以现在我需要在配置之间切换,每次我想编译或编写一些代码时......不是最好的解决方案,但总比没有好。

编辑:好的,刚刚意识到您可以使用@Richard Critten 评论中提到的 __INTELLISENSE__,因此不需要使用多个配置。

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2022-09-24
    • 2020-01-09
    • 2023-04-06
    相关资源
    最近更新 更多