Compilerfejl med Arduinos IDE
Compilerfejl når Setup flyttes til en ny tab i IDE.I lidt større programmer anvender jeg muligheden for at gøre rogrammet mere overskueligt ved at bruge "Tab".
F.eks. anbringer jeg definationer, variable og globale i 'hovedtab' med programnavnet,
Derefter en tab (b_IRQ) med interrupt og dertil hørende rutiner.
Så følger normalt c_Setup, d_Loop, e_Sub og derefter andre grupper.
Nu har jeg forsøgt at bruge eksemplet 'listfilee.ino fra SD-lib. Her har jeg følgende tabs:
//----------------------------------------------------------
'listfiles';
#include <SD.h>
File root;
/*
void setup()
{
Serial.begin(250000);
pinMode(10, OUTPUT);
SD.begin(10);
root = SD.open("/");
printDirectory(root, 0);
root.close();
}
*/
-----------------
'c_Setup' med:
void setup()
{
Serial.begin(250000);
pinMode(10, OUTPUT);
SD.begin(10);
root = SD.open("/");
printDirectory(root, 0);
root.close();
}
-----------------
'd_Loop' med:
void loop()
{
// nothing happens after setup finishes.
}
-----------------
og 'e_Sub' med:
void printDirectory(File dir, int numTabs)
{
while(true)
{
File entry = dir.openNextFile();
if (! entry)
{
if (numTabs == 0)
Serial.println("** Done **");
return;
}
for (uint8_t i=0; i<numTabs; i++)
{
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory())
{
Serial.println("/");
printDirectory(entry, numTabs+1);
}
else
{
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}
//----------------------------------------------------------
Når som vist Setup er kommenteret ud i 'listfiles', kommer compileren med fejlmeldingerne:
Arduino: 1.8.13 (Windows 10), Board: "Arduino Due (Programming Port)"
k_Sub:2:21: error: variable or field 'printDirectory' declared void
void printDirectory(File dir, int numTabs)
k_Sub:2:21: error: 'File' was not declared in this scope
k_Sub:2:31: error: expected primary-expression before 'int'
void printDirectory(File dir, int numTabs)
C:\Arduino\Projects\Test\Test_ListFiles_KG\A_Setup.ino: In function 'void setup()':
A_Setup:8:25: error: 'printDirectory' was not declared in this scope
printDirectory(root, 0);
exit status 1
variable or field 'printDirectory' declared void
Udkommenteres derimod Setup i stedet i 'c_Setup', er der ingen problemer!
Fejlen sker både med Uno, Mega og Due!
Er de nogen forklaring og løsning?
MVh Kurt