microsoft / microsoft/vscode-cpptools

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

Ouverte
#8,533 28 commentaires 22 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Feature Request Feature: Configuration Language Service
Langage dominant
TypeScript
Étoiles
6.2k
Forks
1.7k
Merge moyen
14 h 46 min
PR mergées (30 j)
61

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la configuration signalée de c_cpp_properties.json, en particulier compilerPath, compilerArgs et intelliSenseMode, et reproduisez le diagnostic uint16_t avec un projet XC16. Examinez les points d’entrée du service de langage C/C++ pour les modes IntelliSense spécifiques au compilateur ; le travail est terminé lorsque les configurations XC8, XC16 et XC32 reconnaissent les types fournis par le compilateur sans la fausse erreur signalée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
c, vscode
Domaine
tooling
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.