microsoft / microsoft/vscode-cpptools
Linux: Incorrect Intelli-Sense Error: global wchar_t array initialized with wide character string literal
Nessuno ha ancora preso questa issue.
- 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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- 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