首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种很好的方法使vscode intellisense检测从-xc++-system-头标志生成的用于导入的g++ gcm文件?

是否有一种很好的方法使vscode intellisense检测从-xc++-system-头标志生成的用于导入的g++ gcm文件?
EN

Stack Overflow用户
提问于 2022-07-08 01:16:17
回答 1查看 141关注 0票数 1

我正在尝试使用c++20模块特性,并希望将标准库头作为模块导入。目前我有

代码语言:javascript
复制
import <iostream>;

int main()
{
    std::cout << "hello world!" << std::endl;
    return 0;
}

我运行命令

代码语言:javascript
复制
g++-11 -fmodules-ts -std=c++20 -xc++-system-header iostream
g++-11 -fmodules-ts -std=c++20 -o program main.cpp

这给出了一个功能完美的hello programgcm.cache/usr/include/c++/11/iostream.gcm的一个模块文件。但是vscode抱怨道:

"iostream“不是一个重要的标题。

我的c_cpp_properties.json文件是

代码语言:javascript
复制
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++-11",
            "cStandard": "c17",
            "intelliSenseMode": "linux-clang-x64",
            "cppStandard": "c++20"
        }
    ],
    "version": 4
}

我不知道如何实现的可能解决方案:

  • 告诉vscode这个iostream.gcm文件在哪里的一种方法
  • iostream.gcm对象在vscode已知的某个地方结束时,另一种方法是这样做。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-08 05:08:51

这是已知的IntelliSense 问题

在导入C++20模块或C++源中的头单元时:

  • 您可能不会看到IntelliSense完成或着色。
  • 您可能会看到与编译器不匹配的红色触发器。

现状(截至2022年6月)

解决办法

代码语言:javascript
复制
#if __INTELLISENSE__
#include <iostream>
#else
import <iostream>;
#endif
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72905721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档