arduino lambda function

OP #4014303
Lesenswert?

Hi Leute, vielleicht könnt ihr mir hierbei etwas helfen... ich bin schon 
am verzweifeln.
1
int isKeyPressed() {
2
  //char b [20];
3
  Tasten t=NN; // this key is pressed
4
  Tasten ret=NN; // no key pressed
5
  for( int i=0; i<LEN_ALLETASTEN; i++ ) {
6
    if( digitalRead([i])==LOW ) {
7
      // t speichert die gedrückte Tastet
8
      t=(Tasten)alleTasetn[i];
9
      //sprintf( b, "%d: %d==LOW (%d)\n ", i, t, keypressed ); 
10
      //Serial.print(b);
11
      if( keypressed!=t ) {
12
        keypressed=t; // ist gültig solange die Taste gedrückt ist.
13
        ret = t;
14
      }
15
      break;
16
    }
17
  }
18
  if( t==NN && ret==NN ) { // wenn keine Taste gedrückt ist wird keypressed zurückgesetzt
19
    keypressed=NN;
20
  }  
21
  return ret;
22
}

Beim kompilieren meckert dann diese blöde IDE rum:
1
tinyrtc_test.ino: In lambda function:
2
tinyrtc_test.ino:148:24: error: expected '{' before ')' token
3
tinyrtc_test.ino: In function 'int isKeyPressed()':
4
tinyrtc_test.ino:148:24: error: cannot convert 'isKeyPressed()::__lambda0' to 'uint8_t {aka unsigned char}' for argument '1' to 'int digitalRead(uint8_t)'
5
tinyrtc_test.ino: In function 'void getDate2Lcd(DateTime)':
6
tinyrtc_test.ino:184:133: error: cannot pass objects of non-trivially-copyable type 'class String' through '...'
7
Fehler beim Kompilieren.
Gast #4014320
Lesenswert?

Tom schrieb:
> Die blöde IDE hat wohl auch die sinnlosen eckigen Klammern eingebaut
> (die in aktuellem C++ für Lambdas verwendet werden).
Die blöde IDE verwendet einfach nur C++, und daher sind das Klammern für 
Lambdas, und die sind sehr sinnvoll.

Jan V. schrieb:
> if( digitalRead([i])==LOW ) {
Offensichtlich ist hier der Fehler, denn [i] beginnt ein Lambda. 
Vermutlich war einfach nur digitalRead(i) gemeint.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.