Visitar URL original
VEX `c_cpp_properties.json` recursively exposes Clang CUDA wrapper headers in 1.33+ · Issue #14806 · microsoft/vscode-cpptools · GitHub
Skip to content

VEX c_cpp_properties.json recursively exposes Clang CUDA wrapper headers in 1.33+ #14806

Description

@Arkadious

Issue: When writing C/C++ projects for VEX Robotics using the VEX VS Code Extension, after updating to a C/C++ extension version newer than 1.32.2, the project shows intellisense errors that were not previously present. The project can still successfully build, but will still show errors.

OS Version: Windows 11 Education 25H2 26200.9106
VS Code Version: 1.139.1
C/C++ Extension Version: 1.32.2 and newer
Development Environment: VS Build Tools 2022
VEX Robotics Version: 0.8.2026020401

Steps to Reproduce:

  1. Download C/C++ Extension Version 1.32.2.
  2. Download the VEX Robotics VS Code Extension.
  3. Download a library such as miklib and follow the instructions below to import it into VS Code.
    https://ethanmik.github.io/mikLib/
  4. Wait for intellisense to load, notice the lack of errors, build the project, and save it.
  5. Update the C/C++ Extension to a version newer than 1.32.2 such as 1.34.4.
  6. Close VS Code.
  7. Open VS Code and reopen the project.
  8. Intellisense should now show errors which were not present earlier.
  9. Delete the build and then rebuild. It should continue to build as normal despite the errors.

Activity

  1. Colengms commented on Oct 7, 2026

    @Colengms
    Contributor

    Thanks for the report. I reproduced this using VEX Robotics 0.8.2026020401 and the mikLib project. C/C++ 1.32.2 reports no diagnostics, while 1.33.0 and later—including 1.34.4 and 1.35.3—report the false errors.

    The issue is caused by the c_cpp_properties.json generated by the VEX extension. It supplies paths such as:

    "${vex_sdkPath}/clang/8.0.0/include/**",
    "${vex_gcc}/**"

    In an includePath, the /** suffix means that every subdirectory is an eligible include directory, in the configured root order. Starting with C/C++ 1.33, recursive include paths are resolved directly when each #include is processed instead of first being expanded and reduced to a set of concrete directories. This was an intentional change associated with #14426. It more directly honors the declared meaning of /**; the previous reduction behavior happened to mask this configuration problem.

    In this case, recursively searching the Clang resource directory also exposes nested directories such as clang/8.0.0/include/cuda_wrappers. Those are not compiler include roots for a normal VEX build and can interfere with resolution of standard headers such as <algorithm> and <new>, resulting in the cascading IntelliSense errors.

    The actual VEX makefile uses ordinary, non-recursive -I paths. The generated IntelliSense configuration should do the same, for example:

    "${vex_sdkPath}/clang/8.0.0/include",
    "${vex_gcc}"

    Ideally, the complete IntelliSense include list should match the paths and ordering used by the VEX build. As a temporary workaround, removing /** from the Clang include path eliminates the errors in both C/C++ 1.34.4 and 1.35.3. However, the VEX extension may regenerate that file.

    Because the VEX extension owns and generates this configuration, please report the issue to the VEX extension maintainers at:

    https://github.com/VEX-Robotics/vex-vsc-extension/issues

    Please link back to this issue so they have the investigation details. Given the documented meaning of /**, the current cpptools behavior is expected, so this needs to be corrected in the generated VEX configuration.

    Cowritten with Copilot (GPT-5.6 Sol Fast)

  2. changed the title [-]Intellisense errors for projects after updating C/C++ extension to a version newer than 1.32.2[/-] [+]VEX `c_cpp_properties.json` recursively exposes Clang CUDA wrapper headers in C/C++ 1.33+[/+] on Oct 7, 2026
  3. changed the title [-]VEX `c_cpp_properties.json` recursively exposes Clang CUDA wrapper headers in C/C++ 1.33+[/-] [+]VEX `c_cpp_properties.json` recursively exposes Clang CUDA wrapper headers in 1.33+[/+] on Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

  • Status
    No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions