microsoft / microsoft/vscode-cpptools

Add IntelliSense modes for MPLAB (XC8/XC16/XC32) compilers

Aperta
#8,533 28 commenti 22 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Feature Request Feature: Configuration Language Service
Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

Descrizione

Bug type: Language Service

uint16_t type unrecognized with xc16 compiler

  • Ubuntu 20.04 under WSL2 on Windows 10:
  • VS Code Version: Version: 1.63.0 (user setup)
    Commit: 7db1a2b88f7557e0a43fec75b6ba7e50b3e9f77e
    Date: 2021-12-07T06:26:56.179Z
    Electron: 13.5.2
    Chromium: 91.0.4472.164
    Node.js: 14.16.0
    V8: 9.1.269.39-electron.0
    OS: Windows_NT x64 10.0.19044
  • C/C++ Extension Version: v1.8.0-insiders2
  • Other extensions you installed (and if the issue persists after disabling them): https://gist.github.com/DanieleNardi/d7201e044a00744a8f63dbb900113c09#file-extensions-json
  • If using SSH remote, specify OS of remote machine: n/a
  • A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).

It's a small prject developed with Microchip's dsPIC33EP128MC502.
An error message as follows appears when a uint16_t type is used:

"[{
	"resource": "main.c",
	"owner": "C/C++",
	"code": "757",
	"severity": 8,
	"message": "variable \"uint16_t\" is not a type name",
	"source": "C/C++",
	"startLineNumber": 230,
	"startColumn": 1,
	"endLineNumber": 230,
	"endColumn": 2
}]

Error squiggle only under the 'u' of uint16_t.
Hover window shows correct definition of type.
CTRL+Click works, redirect to compiler-specific stdint.h, where uint16_t is defined as follows:

#ifndef uint16_t
typedef unsigned int uint16_t;
#define uint16_t uint16_t
#define UINT16_MAX (65535U)
#endif

Other types defined in stdint.h in the same way work fine.
Simple call to compiler (from Microchip's IDE or command line) doesn't show this error.

Steps to reproduce
Create c file, .c extension, including stdint.h.
Declare a uint16_t variable in .c file.

Expected behavior
No error at all.

Code sample and logs

  • Code sample

  • Configurations in c_cpp_properties.json

"configurations": [
        {
            "name": "Application",
            "includePath": [
                "${workspaceFolder}/ApplicationFW",
                "/xc16/include",
                "/opt/microchip/xc16/v1.70/include",
                "/xc16/include/lega-c",
                "/xc16/support/generic/h"
            ],
            "defines": [],
            "compilerPath": "/xc16/bin/xc16-gcc",
            "cStandard": "c99",
            "intelliSenseMode": "linux-gcc-x86",
            "compilerArgs": [
                "-c",
                "-include ${workspaceFolder}/ApplicationFW/Microchip/packs/dsPIC33E-GM-GP-MC-GU-MU_DFP/1.3.85/xc16/support/dsPIC33E/h/p33EP128MC502.h",
                "-mcpu=33EP128MC502",
                "-MP",
                "-MMD",
                "-mno-eds-warn",
                "-g",
                "-omf=elf",
                "-legacy-libc",
                "-O0",
                "-msmart-io=1",
                "-Wall",
                "-msfr-warn=off",
                "-mdfp=\"${workspaceFolder}/ApplicationFW/Microchip/packs/dsPIC33E-GM-GP-MC-GU-MU_DFP/1.3.85/xc16\""
            ]

        }
    ],
    "version": 4

Screenshots

Additional context

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 dalla configurazione segnalata di c_cpp_properties.json, in particolare compilerPath, compilerArgs e intelliSenseMode, e riproduci la diagnostica uint16_t con un progetto XC16. Esamina i punti di ingresso del servizio del linguaggio C/C++ per le modalità IntelliSense specifiche del compilatore; il lavoro è completo quando le configurazioni XC8, XC16 e XC32 riconoscono i tipi forniti dal compilatore senza il falso errore segnalato.

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

Valutazione

Stack tecnologico
c, vscode
Ambito
tooling
Tipo di issue
Funzionalità
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.