Single `#include` inside of array causes VSCode to report the "expected an expression" error

Đang mở
#13,735 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
c, typescript
Lĩnh vực
devtools

Hướng nghiên cứu

Bắt đầu với reproducer main.c và file.txt bằng cấu hình VS Code, tiện ích mở rộng C/C++ và cl.exe đã được báo cáo, sau đó so sánh hành vi của trình biên dịch với chẩn đoán của IntelliSense. Hoàn tất khi mảng được mở rộng bằng include được chấp nhận mà không có lỗi "expected an expression" và vẫn giữ nguyên ba phần tử dự kiến.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug Language Service parser Visual Studio
Environment
  • OS and Version: Windows 11 24H2 (Build 26100.4349)
  • VS Code Version: 1.101.2
  • C/C++ Extension Version: 1.26.3
Bug Summary and Steps to Reproduce
Bug Summary:

I'm currently working on a project that combines an X macro with an #include statement to populate an array from a generated file, like this:

// main.c
#include <stdio.h>

#define X(n) n
int array[] = {
#include "file.txt"
    // 0
};  // "expected an expression"
#undef X

int main() {
    for (int i = 0; i < 3; i++)
    {
        printf("%i\n", array[i]);  // Output is "123", as expected.
    }
    return 0;
}

// file.txt
X(1),
X(2),
X(3),

It feels hackish, but it compiles and runs. However, VSCode doesn't seem to like the fact that array has nothing but #include "file.txt" inside. Uncommenting 0 makes the error go away, although, this obviously makes array to have 4 items instead of intended 3.

Steps to reproduce:
  1. Create main.c and file.txt and insert code above;
  2. Open main.c in VSCode;
  3. Notice error on line 7.
Expected behavior:

VSCode should understand that #include "file.txt" with expanded macros provide an expected expression.

Configuration and Logs
-------- Diagnostics - 6/30/2025, 1:54:07 AM
Version: 1.26.3
Current Configuration:
{
    "name": "Win32",
    "includePath": [
        "${workspaceFolder}/**"
    ],
    "defines": [
        "_DEBUG",
        "UNICODE",
        "_UNICODE"
    ],
    "windowsSdkVersion": "10.0.26100.0",
    "compilerPath": "cl.exe",
    "cStandard": "c17",
    "cppStandard": "c++17",
    "intelliSenseMode": "windows-msvc-x64",
    "compilerPathInCppPropertiesJson": "cl.exe",
    "intelliSenseModeIsExplicit": false,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "mergeConfigurations": false,
    "recursiveIncludes": {},
    "recursiveIncludesReduceIsExplicit": false,
    "recursiveIncludesPriorityIsExplicit": false,
    "recursiveIncludesOrderIsExplicit": false,
    "compilerPathIsExplicit": false,
    "browse": {
        "limitSymbolsToIncludedHeaders": true
    }
}
Modified Settings:
{
    "C_Cpp.autocompleteAddParentheses": true,
    "C_Cpp.formatting": "clangFormat",
    "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, AlignAfterOpenBracket: BlockIndent, BinPackArguments: false, PenaltyBreakAssignment: 64 }",
    "C_Cpp.codeAnalysis.clangTidy.enabled": true
}
Additional Tracked Settings:
{
    "editorTabSize": 4,
    "editorInsertSpaces": true,
    "editorAutoClosingBrackets": "languageDefined",
    "filesEncoding": "utf8",
    "filesAssociations": {},
    "filesExclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/.DS_Store": true,
        "**/Thumbs.db": true
    },
    "filesAutoSaveAfterDelay": false,
    "editorInlayHintsEnabled": true,
    "editorParameterHintsEnabled": true,
    "searchExclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.code-search": true
    },
    "workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.26.3.0
Current database path: C:\USERS\OPERATOR\APPDATA\LOCAL\TEMP\{4514E1A3-0F0D-4E39-A2F4-4D7081E65254}\.BROWSE.VC.DB
Translation Unit Mappings:
[ C:\Users\operator\Desktop\repos\test\main.c - source TU]:
    C:\Users\operator\Desktop\repos\test\file.txt
Translation Unit Configurations:
[ C:\Users\operator\Desktop\repos\test\main.c ]
    Process ID: 11608
    Memory Usage: 63 MB
    Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64\cl.exe
    Include paths:
        include: C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include
        include: C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include
        include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt
        include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um
        include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared
        include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt
        include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt
        include: C:\Program Files (x86)\Windows Kits\NETFXSDK\4.7.2\Include\um
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt
    Defines:
        _DEBUG
        UNICODE
        _UNICODE
    Standard Version: ms_c17
    IntelliSense Mode: windows-msvc-x64
    Other Flags:
        --using_directory
        C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\lib\x86
        --using_directory
        C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\lib\x86\store\references
        --using_directory
        C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.26100.0
        --using_directory
        C:\Program Files (x86)\Windows Kits\10\References\10.0.26100.0
        --using_directory
        C:\Windows\Microsoft.NET\Framework\v4.0.30319
Total Memory Usage: 63 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 5082
Number of files parsed: 238
Other Extensions

No response

Additional context

No response

Ngôn ngữ chính
TypeScript
Star
6.2k
Fork
1.7k
Merge trung bình
14 giờ 46 phút
Pull request đã merge (30 ngày)
61

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/vscode-cpptools

Tất cả issue của microsoft/vscode-cpptools

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.