microsoft / microsoft/vscode-cpptools

Create Declaration / Definition in current file

Aperta
#10,698 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Feature: Create Declaration or Definition investigate: repro Language Service
Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

Descrizione

Discussed in https://github.com/microsoft/vscode-cpptools/discussions/10642

Originally posted by FernandoGarcia March 7, 2023
Hi!

I would to know how to create function prototype in an Arduino code while using Platformio.

I'm talking about this type of code:

main.cpp

#include <Arduino.h>
#include <Bounce2.h>

#define NUM_RELAYS 3
#define INITIAL_STATE LOW  // Initial state = HIGH to active LOW relay model.

struct INFOS
{
  const byte relayPin;
  bool relayState;
  const byte buttonPin;
};

INFOS info[NUM_RELAYS] =
{
  {2, INITIAL_STATE, 18}, // Relay 0 pin, relay 0 state, button 0 pin
  {4, INITIAL_STATE, 19},
  {5, INITIAL_STATE, 21}
};

Bounce2::Button button[NUM_RELAYS] = {Bounce2::Button()};

void setup()
{
  Serial.begin(9600);

  for (byte i = 0; i < NUM_RELAYS; i++)
  {
    button[i].attach(info[i].buttonPin, INPUT_PULLUP);
    button[i].setPressedState(LOW);
    button[i].interval(5);

    pinMode(info[i].relayPin, OUTPUT);
    digitalWrite(info[i].relayPin, info[i].relayState);
  }
}

void loop()
{
  for (byte i = 0; i < NUM_RELAYS; i++)
  {
    button[i].update();

    if (button[i].pressed())
    {
      info[i].relayState = !info[i].relayState;
      digitalWrite(info[i].relayPin, info[i].relayState);
      printDebug(i);
      break;
    }
  }
}

void printDebug(byte i)
{
  Serial.print("Button ");
  Serial.print(i);
  Serial.print(" pressed, relayState ");
  Serial.print(i);
  Serial.print(": ");
  Serial.println(info[i].relayState);
}

The compiling error for this code is:

src/main.cpp: In function 'void loop()':
src/main.cpp:47:7: error: 'printDebug' was not declared in this scope
       printDebug(i);
       ^~~~~~~~~~
src/main.cpp:47:7: note: suggested alternative: 'Printable'
       printDebug(i);
       ^~~~~~~~~~
       Printable
*** [.pio/build/uno/src/main.cpp.o] Error 1

So I have always to create manually all functions prototypes on top of my code in this way:

void printDebug(byte i);

I have tried the new feature of C++ extension but it doesn't works well for this type of code.

The declaration is being placed in Arduino.h header file what is not correct for this case.

Thanks in advance.

Best regards.

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

Riprodurre il problema utilizzando l’esempio main.cpp fornito in un progetto Arduino PlatformIO, concentrandosi sulla funzionalità Create Definitions and Declarations. Confrontare il posizionamento della dichiarazione generata con Arduino.h e con il contesto corrente del file. Il lavoro è completato quando il prototipo della funzione viene inserito nel file sorgente corrente anziché in Arduino.h.

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

Valutazione

Stack tecnologico
arduino, cpp
Ambito
developer-experience, 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.