Error parsing C macro with __attribute__

Aperta
#10,694 11 commenti 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

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

Direzione di ricerca

Riproduci la diagnostica della macro in libertas_cluster_base.h usando libertas_cluster_impl.c come unità di traduzione e la configurazione GCC C17 riportata. Inizia tracciando il modo in cui IntelliSense analizza attribute in questa forma di macro; il lavoro è completato quando il codice C valido non segnala più l’errore “expected a type specifier” e continua a compilare correttamente.

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

Descrizione

embedded Feature: Configuration investigate: repro Language Service
Environment
  • OS and Version: Ubuntu 22/04
  • VS Code Version: 1.73.1
  • C/C++ Extension Version: 1.15.0
Bug Summary and Steps to Reproduce

Bug Summary:

Steps to reproduce:

#define BYTE_ALIGNED_TEST( __Declaration__ ) __Declaration__ __attribute__((__packed__))

BYTE_ALIGNED_TEST(
typedef struct test_struct {
	uint16_t    i;
	uint8_t      j;
}) test_struct;

Expected behavior:
The code compiles fine.

But Intellisense reports an error:
[{
"resource": "/home/weiqj/workspace/hornet/src/core/net/cluster_lib/libertas_cluster_base.h",
"owner": "C/C++: IntelliSense",
"code": "79",
"severity": 8,
"message": "expected a type specifier",
"source": "C/C++",
"startLineNumber": 57,
"startColumn": 1,
"endLineNumber": 57,
"endColumn": 18
}]

Configuration and Logs
-------- Diagnostics - 3/16/2023, 8:22:21 PM
Version: 1.15.0
Current Configuration:
{
    "name": "Hornet",
    "includePath": [
        "/opt/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/include/",
        "/home/weiqj/workspace/hornet/src/",
        "/home/weiqj/workspace/hornet/src/FreeRTOS-Kernel/include/*",
        "/home/weiqj/workspace/hornet/src/vendors/nordic/nrf5/*",
        "/home/weiqj/workspace/hornet/src/vendors/nordic/nrf5/freertos-libertas/*",
        "/home/weiqj/workspace/hornet/src/devices/nrf52840/dongle/switch/*",
        "/opt/nRF5_SDK_17.1.0_ddde560/external/freertos/portable/ARM/nrf52/*",
        "/opt/nRF5_SDK_17.1.0_ddde560/external/freertos/portable/CMSIS/nrf52/*",
        "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx",
        "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/mdk",
        "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/hal",
        "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/soc",
        "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/drivers/src",
        "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/drivers/include",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/experimental_section_vars",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/strerror",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/delay",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/util",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/boards",
        "/opt/nRF5_SDK_17.1.0_ddde560/integration/nrfx",
        "/opt/nRF5_SDK_17.1.0_ddde560/integration/nrfx/legacy",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/queue",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/fifo",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/log",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/log/src",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/drivers_nrf/nrf_soc_nosd",
        "/opt/nRF5_SDK_17.1.0_ddde560/components/toolchain/cmsis/include/*",
        "/home/weiqj/workspace/hornet/*",
        "/home/weiqj/workspace/hornet/src/platform/nordic/nrf52840/dongle"
    ],
    "defines": [
        "__GNUC__",
        "NO_XERCESC",
        "__XTENSA__",
        "HORNET_LIBERTAS_APP_ENGINE_ENABLED=1",
        "HORNET_DEVICE_TYPE=HORNET_ROUTER",
        "LIBERTAS_CLUSTER_LIB_APP_SUPPORT"
    ],
    "compilerPath": "/opt/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc",
    "cStandard": "c17",
    "cppStandard": "c++17",
    "intelliSenseMode": "gcc-arm",
    "compilerArgs": [
        "-mfloat-abi=hard"
    ],
    "browse": {
        "path": [
            "/opt/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/include/",
            "/opt/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/",
            "${workspaceFolder}/src/",
            "${workspaceFolder}/src/FreeRTOS-Kernel/include/*",
            "${workspaceFolder}/src/vendors/nordic/nrf5/*",
            "${workspaceFolder}/src/vendors/nordic/nrf5/freertos-libertas/*",
            "${workspaceFolder}/src/devices/nrf52840/dongle/switch/*",
            "/opt/nRF5_SDK_17.1.0_ddde560/external/freertos/portable/ARM/nrf52/*",
            "/opt/nRF5_SDK_17.1.0_ddde560/external/freertos/portable/CMSIS/nrf52/*",
            "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx",
            "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/mdk",
            "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/hal",
            "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/soc",
            "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/drivers/src",
            "/opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/drivers/include",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/experimental_section_vars",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/strerror",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/delay",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/util",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/boards",
            "/opt/nRF5_SDK_17.1.0_ddde560/integration/nrfx",
            "/opt/nRF5_SDK_17.1.0_ddde560/integration/nrfx/legacy",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/queue",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/fifo",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/log",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/libraries/log/src",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/drivers_nrf/nrf_soc_nosd",
            "/opt/nRF5_SDK_17.1.0_ddde560/components/toolchain/cmsis/include/*",
            "${workspaceFolder}/*",
            "${workspaceFolder}/src/platform/nordic/nrf52840/dongle"
        ],
        "limitSymbolsToIncludedHeaders": true
    },
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": true,
    "cppStandardIsExplicit": true,
    "intelliSenseModeIsExplicit": true,
    "rawCompilerPath": "/opt/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc",
    "mergeConfigurations": false
}
Translation Unit Mappings:
[ /home/weiqj/workspace/hornet/src/core/net/cluster_lib/libertas_cluster_impl.c ]:
    /home/weiqj/workspace/hornet/src/core/net/cluster_lib/libertas_cluster_impl.c
    /home/weiqj/workspace/hornet/src/core/net/cluster_lib/libertas_cluster_base.h *
Translation Unit Configurations:
[ /home/weiqj/workspace/hornet/src/core/net/cluster_lib/libertas_cluster_impl.c ]:
    Process ID: 65014
    Memory Usage: 854 MB
    Includes:
        /opt/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/include
        /home/weiqj/workspace/hornet/src
        /home/weiqj/workspace/hornet/src/FreeRTOS-Kernel/include
        /home/weiqj/workspace/hornet/src/vendors/nordic/nrf5
        /home/weiqj/workspace/hornet/src/vendors/nordic/nrf5/freertos-libertas
        /home/weiqj/workspace/hornet/src/devices/nrf52840/dongle/switch
        /opt/nRF5_SDK_17.1.0_ddde560/external/freertos/portable/ARM/nrf52
        /opt/nRF5_SDK_17.1.0_ddde560/external/freertos/portable/CMSIS/nrf52
        /opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx
        /opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/mdk
        /opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/hal
        /opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/soc
        /opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/drivers/src
        /opt/nRF5_SDK_17.1.0_ddde560/modules/nrfx/drivers/include
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/experimental_section_vars
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/strerror
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/delay
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/util
        /opt/nRF5_SDK_17.1.0_ddde560/components/boards
        /opt/nRF5_SDK_17.1.0_ddde560/integration/nrfx
        /opt/nRF5_SDK_17.1.0_ddde560/integration/nrfx/legacy
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/queue
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/fifo
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/log
        /opt/nRF5_SDK_17.1.0_ddde560/components/libraries/log/src
        /opt/nRF5_SDK_17.1.0_ddde560/components/drivers_nrf/nrf_soc_nosd
        /opt/nRF5_SDK_17.1.0_ddde560/components/toolchain/cmsis/include
        /home/weiqj/workspace/hornet
        /home/weiqj/workspace/hornet/src/platform/nordic/nrf52840/dongle
        /usr/include/x86_64-linux-gnu/c++/9
        /usr/include/c++/9
        /usr/local/include
        /usr/include/x86_64-linux-gnu
        /usr/include
    Defines:
        __GNUC__
        NO_XERCESC
        __XTENSA__
        HORNET_LIBERTAS_APP_ENGINE_ENABLED=1
        HORNET_DEVICE_TYPE=HORNET_ROUTER
        LIBERTAS_CLUSTER_LIB_APP_SUPPORT
    Standard Version: c17
    IntelliSense Mode: linux-gcc-arm
Total Memory Usage: 854 MB

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

No response

Additional context

No response

Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

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.

Altre issue di microsoft/vscode-cpptools

Tutte le issue di microsoft/vscode-cpptools

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.