microsoft / microsoft/vscode-cpptools

Linux: Incorrect Intelli-Sense Error: global wchar_t array initialized with wide character string literal

Aperta
#12,504 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug investigate: repro Language Service Works in VS
Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

Descrizione

Environment
  • OS and Version: Linux (Ubuntu based 22.04 & 20.04 on WSL)
  • VS Code Version: 1.91.1
  • C/C++ Extension Version: 2.0.0
Bug Summary and Steps to Reproduce

Steps to reproduce:
Create a .c file with a global wchar_t array and initialize it with a wide char string literal (L"..." )
i.e. wchar_t s[] = L"ABC";

Bug Summary:
On Linux the Intelli-Sense Engine seems to identify wide-character string literals as unsigned int arrays while wchar_t is typedef'd by GCC to be signed int, causing a type mismatch which triggers an incorrect error.

The error shown is:
a value of type "unsigned int [4]" cannot be used to initialize an entity of type "wchar_t []" (aka "int []")C/C++(144)

Initializing a const wchar_t * doesn't produce an error.
Initializing in a local scope doesn't produce an error.

Some potentially relevant VSCode settings:

C_Cpp.intelliSenseEngine = deafult
C_Cpp.intelliSenseEngineFallback = disabled

C_Cpp.default.cStandard = C17
(same result for all other available values)

C_Cpp.default.intelliSenseMode = linux-gcc-x64
(or:)
C_Cpp.default.intelliSenseMode = windows-gcc-x64
Configuration and Logs
(some information omitted)


Version: 1.21.3
Current Configuration:
{
    "name": "Linux",
    "cStandard": "c17",
    "cppStandard": "c++17",
    "intelliSenseMode": "linux-gcc-x64",
    "intelliSenseModeIsExplicit": true,
    "cStandardIsExplicit": true,
    "cppStandardIsExplicit": true,
    "mergeConfigurations": false,
}
cpptools version (native): 1.21.3.0

Translation Unit Configurations:

    Process ID: 5302
    Memory Usage: 18 MB
    Compiler Path: /usr/bin/gcc
    Includes:
    System Includes:
        /usr/lib/gcc/x86_64-linux-gnu/9/include
        /usr/local/include
        /usr/include/x86_64-linux-gnu
        /usr/include
    Standard Version: c17
    IntelliSense Mode: linux-gcc-x64
    Other Flags:
        --gcc
        --gnu_version=90400
Total Memory Usage: 18 MB
Other Extensions

No response

Additional context

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con il reproducer .c segnalato, la dichiarazione dell’array globale wchar_t e la configurazione Linux GCC IntelliSense. Verifica che la diagnostica scompaia per l’inizializzazione della stringa wide globale, mentre il comportamento esistente di const-pointer e dell’ambito locale rimanga invariato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
c, typescript, vscode
Ambito
tooling
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.