microsoft / microsoft/vscode-cpptools
Create Declaration / Definition in current file
Nessuno ha ancora preso questa issue.
- 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
- 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
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